Nginx And SSL Short Runbook
이 문서를 볼 때
- Nginx를 reverse proxy 또는 web entrypoint로 구성할 때
- Let's Encrypt 인증서를 발급/갱신할 때
- 서비스 유형별 Nginx 설정을 선택할 때
먼저 필요한 입력값
- FQDN과 DNS 준비 여부
- HTTP/HTTPS 외부 노출 여부
- upstream 주소와 포트
- 서비스 유형: web, api, admin, auth, git, health, internal, svn
- SSL 발급 방식: webroot, nginx plugin, DNS-01, 내부 인증서
- 인증서 자동 갱신 방식: systemd timer 또는 cron
- client upload size, timeout, rate limit 기준
작업 순서
- OS 전제 조건과 커널/파일 제한 확인
- Nginx 설치와 기본 구조 확인
- global 설정 적용 범위 결정
- 서비스 유형별 server block 선택
- HTTP 80 ACME webroot location 구성
- staging 인증서 발급
- production 인증서 발급
- 443 server block 수동 반영
- 자동 갱신과 deploy-hook 검증
nginx -t와 실제 curl 검증
중단 조건
- DNS가 아직 서버로 향하지 않음
- 80 포트 접근이 막혀 있는데 HTTP-01 발급을 요청
- SSL 종료 위치가 Nginx인지 외부 LB인지 미확정
- Certbot이 Nginx 설정을 자동 수정해도 되는지 결정되지 않음
- HSTS를 테스트/임시 도메인에 적용하려 함
- upstream 포트가 외부 firewall에 직접 열려 있음
검증 명령
nginx -t
systemctl status nginx
curl -I http://example.com
curl -I https://example.com
certbot certificates
certbot renew --dry-run
systemctl list-timers | grep certbot
ss -lntup | grep -E ':(80|443)\b'
상세 문서