1. 도메인 HTTPS 인증 받기
2. 도메인 원하는 포트에 리버스 프록시 설정하기
3. nginx 설정 적용 하기
sudo certbot --nginx -d {YOUR_DOMAIN}
설정 적용을 다시 해주는 이유는 certbot이 nginx의 설정 파일을 직접 수정했기 때문입니다. 아래 코드를 입력해주세요.
sudo nginx -t # 설정 파일 문법 확인
sudo systemctl reload nginx # nginx 리로드
https 인증은 90일마다 재인증을 해야합니다. 따라서 이를 자동으로 해줄 수 있게 하도록 아래 코드를 입력해주세요.
sudo certbot renew --dry-run
sudo {nano, vim} /etc/nginx/sites-available/{YOUR_DOMAIN}
설정 파일명을 도메인명으로 짓는 이유는 나중에 설정 관리를 편리하게 하기 위해서입니다.
실제로는 /etc/nginx/sites-available 디렉토리 안에 있는 활성화 된 아무 폴더에 이 코드를 작성해도 오류가 나지않습니다.
추가로 활성화와 비활성화 정책에 대해서도 간단히 짚고 가겠습니다.
/etc/nginx/sites-available 이 디렉토리 안에 있는 모든 정책은 비활성화 되어 있습니다.
따라서 /etc/nginx/sites-enabled 디렉토리에 심볼릭 링크를 만들어 정책을 활성화 할 수 있습니다.
심볼릭 링크를 만드는 방법은 다음과 같습니다.
# 문법
sudo ln -s {심볼릭 링크 할 파일의 경로} {심볼릭 링크를 담고싶은 디렉토리 경로}
# 예시
sudo ln -s /etc/nginx/sites-available/{YOUR_DOMAIN} /etc/nginx/sites-enabled/
위의 예시와 같이 정책 파일을 활성화 시킬 수 있습니다.
삭제하는 방법은 즉, 비활성화 하는 방법은 아래와 같습니다.
# 문법
sudo rm -s {삭제할 파일 경로}
# 예시
sudo rm -s /etc/nginx/sites-enabled/{YOUR_DOMAIN}
server {
listen 80;
server_name {YOUR_DOMAIN};
return 301 https://$host$request_uri; # HTTP -> HTTPS 리디렉션
}
server {
listen 443 ssl;
server_name {YOUR_DOMAIN};
ssl_certificate /etc/letsencrypt/live/{YOUR_DOMAIN}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{YOUR_DOMAIN}/privkey.pem;
# 리버스 프록시 설정
location / {
proxy_pass http://localhost:{YOUR_PORT_NUMBER};
# {YOUR_PORT_NUMBER} 포트로 리버스 프록시
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;
}
}
위 코드 타이핑 후 파일 저장
{YOUR_PORT_NUMBER}가 방화벽에 차단되어있는지 확인
(80이나 443 포트도 리스트에 allow 되어있지 않다면 똑같이 차단 풀어주세요!)
sudo ufw status
차단되어 있다면 포트 개방하기
sudo ufw allow {YOUR_PORT_NUMBER}
sudo nginx -t # 오류난다면 오류 해결하기
sudo systemctl reload nginx
sudo nginx -t # 설정 파일 문법 확인
성공할 때 까지 반복
sudo systemctl reload nginx # 재로드 (추천) 연결이 끊기지 않고 설정 변경 사항이 적용됨
sudo systemctl restart nginx # 재시작
sudo systemctl status nginx # 정상 작동 시 Active: active (running)