우분투(Ubuntu) 환경에서 Nginx에 SSL(HTTPS)을 설정하는 가장 표준적이고 안전한 방법은 Let’s Encrypt(Certbot)를 이용하는 것입니다. Certbot을 사용하면 인증서 발급부터 Nginx 설정 반영, 자동 갱신까지 한 번에 처리할 수 있습니다. [1, 2, 3, 4]
전체 설정 순서는 다음과 같습니다.
1. 사전 준비 (도메인 DNS 및 방화벽 설정)
인증서를 발급받기 전에 도메인과 네트워크 환경이 준비되어 있어야 합니다.
- DNS 레코드 등록: 구매한 도메인의 DNS 설정에서 A 레코드를 우분투 서버의 공인 IP로 지정합니다 (예:
example.com,www.example.com). - 방화벽(UFW) 허용: HTTPS(443) 통신이 가능하도록 방화벽 설정을 변경합니다.bash
sudo ufw allow 'Nginx Full'코드를 사용할 때는 주의가 필요합니다.(기존에Nginx HTTP만 켜두었다면,Nginx Full을 허용하여 80번과 443번 포트를 모두 열어줍니다.) [1, 2, 3, 4]
2. Nginx 기본 서버 블록 설정
Certbot이 도메인을 인식하고 설정 파일을 자동으로 수정할 수 있도록, Nginx 설정 파일에 도메인 이름을 미리 적어두어야 합니다. [1, 2]
- 설정 파일 열기 (기본 설정 또는 가상 호스트 파일):bash
sudo nano /etc/nginx/sites-available/default코드를 사용할 때는 주의가 필요합니다. server_name수정:localhost나_로 되어 있는 부분을 본인의 실제 도메인으로 변경합니다.nginxserver { listen 80; server_name example.com www.example.com; # 본인 도메인 입력 location / { try_files $uri $uri/ =404; } }코드를 사용할 때는 주의가 필요합니다.- Nginx 설정 검사 및 재시작:bash
sudo nginx -t sudo systemctl restart nginx코드를 사용할 때는 주의가 필요합니다. [1, 2, 3, 4, 5]
3. Certbot 및 Nginx 플러그인 설치
우분투 패키지 매니저를 통해 Certbot과 Nginx 연동 전용 플러그인을 설치합니다. [1, 2]
bash
sudo apt update
sudo apt install certbot python3-certbot-nginx
코드를 사용할 때는 주의가 필요합니다.
4. SSL 인증서 발급 및 자동 설정 실행
Certbot을 실행하여 인증서를 발급받습니다. --nginx 옵션을 사용하면 Nginx 설정 파일까지 자동으로 HTTPS 전용 코드로 수정해 줍니다. [1, 2, 3]
bash
sudo certbot --nginx -d example.com -d www.example.com
코드를 사용할 때는 주의가 필요합니다.
- 진행 과정 중 안내 문구 처리:
성공적으로 완료되면 /etc/letsencrypt/live/도메인명/ 경로에 인증서 파일들이 생성되고, Nginx 설정 파일에 SSL 설정 코드(ssl_certificate, ssl_certificate_key 등)가 자동으로 삽입됩니다. [1, 2]
5. SSL 자동 갱신 확인
Let’s Encrypt 인증서는 90일 동안만 유효하지만, 우분투에 Certbot을 설치하면 시스템 타이머(cron 또는 systemd timer)에 자동 갱신 스크립트가 매일 자동으로 등록됩니다. [1, 2]
자동 갱신 기능이 정상적으로 작동하는지 테스트하려면 아래 명령어를 입력합니다: [1]
bash
sudo certbot renew --dry-run
코드를 사용할 때는 주의가 필요합니다.
에러 메시지 없이 “Congratulations, all simulated renewals succeeded” 문구가 출력되면 모든 설정이 정상적으로 끝난 것입니다.

답글 남기기