On this page
Nginx 웹 서버를 설치하고, Let's Encrypt를 통해 SSL 인증서를 발급받아 HTTPS 연결을 설정하는 과정을 단계별로 설명합니다.
1. Nginx 설치
Nginx는 가벼운 웹 서버 소프트웨어로, 여러 종류의 요청을 효율적으로 처리할 수 있습니다. 아래 지침을 따라 Nginx를 설치하십시오.
Ubuntu/Debian 시스템
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
CentOS/RHEL 시스템
sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
2. SSL 인증서 발급 및 설정
SSL 인증서를 통해 웹사이트의 보안을 강화할 수 있습니다. Let's Encrypt에서 제공하는 무료 SSL 인증서를 사용하면 경제적입니다.
Certbot 설치
# Ubuntu/Debian
sudo apt install certbot python3-certbot-nginx
# CentOS/RHEL
sudo yum install certbot python3-certbot-nginx
인증서 발급
sudo certbot --nginx -d yourdomain.com
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
이 과정은 자동으로 도메인의 소유권을 검증하고, 인증서를 발급받아 Nginx에 설정합니다.
3. Nginx 리버스 프록시 설정
Nginx를 리버스 프록시로 설정하여 온프레미스 서버로 트래픽을 전달하도록 설정합니다.
# /etc/nginx/sites-available/yourdomain.com
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri; # 모든 HTTP 요청을 HTTPS로 리다이렉트
# HTTP 요청을 HTTPS로 강제 리다이렉트 #메모
location / {
return 301 https://$server_name$request_uri;
}
}
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3; # 보안 프로토콜 설정
ssl_prefer_server_ciphers on;
# WebSocket 경로
location /_stcore/stream {
proxy_pass http://...:...;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://your_backend_ip:port; # 온프레미스 서버로 요청 전달
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
사이트 활성화
생성한 설정 파일을 활성화하기 위해, /etc/nginx/sites-enabled/ 디렉터리에 심볼릭 링크를 생성합니다:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
4. 구성 테스트 및 Nginx 재시작
수정된 설정이 올바른지 검사하고, Nginx 서버를 재시작합니다.
sudo nginx -t # 구성 테스트
sudo systemctl restart nginx # Nginx 재시작
이제 설정이 완료되었습니다. HTTPS를 통해 보안 연결이 가능하고, 모든 트래픽은 안전하게 온프레미스 서버로 전달됩니다.
주의사항
- 도메인이 올바르게 DNS에 등록되어 있고, 해당 서버의 IP 주소를 가리켜야 합니다.
- 방화벽 설정이나 다른 보안 구성으로 인해 서버가 외부에서 접근 불가능할 수 있으니, 이를 확인하고 조정해야 합니다.
1. Nginx 구성 파일 확인
먼저, Nginx의 메인 구성 파일인 **nginx.conf
**를 확인해 보세요. 이 파일에서 include
지시어가 /etc/nginx/sites-enabled/
디렉토리를 참조하고 있는지 확인합니다.
bashCopy code
sudo nano /etc/nginx/nginx.conf
이 파일을 열어서 다음과 같은 줄이 있는지 확인하세요.
nginxCopy code
include /etc/nginx/sites-enabled/*;
2. sites-enabled
디렉토리 확인
/etc/nginx/sites-enabled/
디렉토리 내의 심볼릭 링크들을 확인합니다. default
파일 링크가 남아있지 않은지 확인하고, 필요한 경우 삭제합니다.
bashCopy code
ls -l /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
3. keun.me 구성 파일 확인 및 활성화
**keun.me
**에 대한 구성 파일이 **/etc/nginx/sites-available/
**에 존재하는지 확인하고, 이를 /etc/nginx/sites-enabled/
디렉토리로 심볼릭 링크를 생성해 활성화합니다.
bashCopy code
sudo ln -s /etc/nginx/sites-available/keun.me /etc/nginx/sites-enabled/keun.me
4. Nginx 구성 검사
구성이 정확히 되었는지 검사합니다. 오류가 없어야 합니다.
bashCopy code
sudo nginx -t
5. Nginx 재시작
구성 검사에서 오류가 없으면 Nginx를 재시작합니다.
bashCopy code
sudo systemctl restart nginx
Sample - conf
server {
listen 80;
server_name keun.me;
return 301 https://$host$request_uri; # 모든 HTTP 요청을 HTTPS로 리다이렉트
}
server {
listen 443 ssl;
server_name keun.me;
ssl_certificate /etc/letsencrypt/live/keun.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/keun.me/privkey.pem;
client_max_body_size 10M; # 업로드 파일용량
location / {
proxy_pass http://localhost:2368; # 온프레미스 서버로 요청 전달
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}