콘텐츠로 이동

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 기준

작업 순서

  1. OS 전제 조건과 커널/파일 제한 확인
  2. Nginx 설치와 기본 구조 확인
  3. global 설정 적용 범위 결정
  4. 서비스 유형별 server block 선택
  5. HTTP 80 ACME webroot location 구성
  6. staging 인증서 발급
  7. production 인증서 발급
  8. 443 server block 수동 반영
  9. 자동 갱신과 deploy-hook 검증
  10. 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'

상세 문서