✅ 서비스 중단 시간 최소화
✅ Elastic IP(EIP) 비용 절감
✅ SSL 인증서 발급 및 갱신 문제 방지
✅ 사전 테스트 및 오류 방지
server_name example.com; 등의 설정을 미리 적용해 두면 배포 당일 빠르게 SSL 설정 가능Route 53에서 도메인을 등록 또는 기존 도메인 사용
A 레코드를 추가하고 EC2 퍼블릭 IP를 입력 (Elastic IP는 배포 당일 할당)
example.com → <EC2 퍼블릭 IP
✔ Nginx 설치
sudo apt update
sudo apt install nginx -y
✔ Nginx 리버스 프록시 설정
/etc/nginx/sites-available/default 수정
sudo vi /etc/nginx/sites-available/default
nginx
복사편집
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
✔ 설정 적용
sudo nginx -t # 설정 파일 문법 체크
sudo systemctl restart nginx
✔ 방화벽 설정 (UFW 사용 시)
sudo ufw allow 'Nginx Full'
sudo ufw enable
✔ Certbot 설치 (Let's Encrypt)
sudo apt install certbot python3-certbot-nginx -y
✔ Nginx SSL 설정을 미리 준비
server_name이 example.com으로 설정되었는지 확인
Certbot이 실행될 때 자동으로 SSL 설정을 추가할 수 있도록 준비
plaintext
복사편집
example.com → <Elastic IP>
bash
복사편집
sudo certbot --nginx -d example.com
이메일 입력 후 약관 동의
HTTP에서 HTTPS로 자동 리디렉션할지 선택 (권장: Yes)
✔ 발급된 인증서 확인
bash
복사편집
sudo ls /etc/letsencrypt/live/example.com/
✔ Nginx 설정 확인 후 재시작
bash
복사편집
sudo nginx -t
sudo systemctl restart nginx
✔ HTTPS 적용 확인
plaintext
복사편집
https://example.com
✔ 자동 갱신 테스트
bash
복사편집
sudo certbot renew --dry-run
✔ 자동 갱신 cron 작업 추가
bash
복사편집
echo "0 3 * * * certbot renew --quiet && systemctl reload nginx" | sudo tee -a /etc/crontab
매일 새벽 3시에 인증서 갱신 및 Nginx 재시작