Nginx SSL 인증서를 수동으로 교체하거나 설정을 변경한 후에는 서비스 중단 없이 안전하게 반영하기 위해 문법 검사(Test) 후 재적용(Reload 또는 Restart)을 수행해야 합니다. [1, 2]
수동 적용을 위한 1회성 쉘 스크립트와 향후 인증서 갱신 시 자동 실행되는 훅(Hook) 스크립트 구성 순서는 다음과 같습니다.
1. 수동 재적용 1회성 쉘 스크립트 (ssl-reload.sh)
서버에서 SSL 인증서 파일을 교체하거나 nginx.conf를 수정한 직후 실행하는 표준 스크립트입니다. reload는 문법 오류가 있을 경우 적용을 거부하므로 안전합니다. [1]
- 스크립트 파일 생성:bash
sudo nano /usr/local/bin/ssl-reload.sh코드를 사용할 때는 주의가 필요합니다. - 스크립트 내용 작성:bash
#!/bin/bash echo "1. Nginx 설정 문법 검사 중..." sudo nginx -t if [ $? -eq 0 ]; then echo "2. 문법 검사 성공. Nginx 설정을 부드럽게 재적용(reload)합니다." sudo systemctl reload nginx echo "Nginx SSL 재설정이 완료되었습니다." else echo "[오류] Nginx 문법에 문제가 있습니다. 설정을 확인해주세요." >&2 exit 1 fi코드를 사용할 때는 주의가 필요합니다. - 실행 권한 부여 및 실행:bash
sudo chmod +x /usr/local/bin/ssl-reload.sh sudo /usr/local/bin/ssl-reload.sh코드를 사용할 때는 주의가 필요합니다. [1, 2]
2. Certbot 자동 갱신 후 리부팅(재적용) 훅 스크립트 설정
Let’s Encrypt 인증서가 certbot renew 명령어로 갱신될 때, Nginx가 즉시 새로운 인증서를 읽어오도록 Deploy Hook 디렉토리에 스크립트를 등록합니다. [1, 2]
- 배포 후 실행될 훅 파일 생성:bash
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh코드를 사용할 때는 주의가 필요합니다. - 스크립트 내용 작성:bash
#!/bin/bash # 인증서 갱신 직후 문법 검사 후 리로드 수행 nginx -t -q && systemctl reload nginx코드를 사용할 때는 주의가 필요합니다. - 실행 권한 부여:bash
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh코드를 사용할 때는 주의가 필요합니다. [1]
3. 주요 명령어 비교 요약
sudo nginx -t: 설정 파일에 오타나 경로 오류가 없는지 사전 검사.sudo systemctl reload nginx: 기존 활성 세션을 유지하면서 새 인증서와 설정을 반영 (운영 환경 권장).sudo systemctl restart nginx: 기존 연결을 강제 종료 후 프로세스를 재시작. (만약 구버전 프로세스가 구형 인증서를 물고 있는 특수한 상황이 아니라면 운영 서버에서reload가 선호됩니다.) [1, 2, 3, 4]
만약 현재 운영 중인 서비스가 완전한 무중단 구조이거나 로드 밸런서 뒤에 있는 다중화 서버 환경인가요? 필요하다면 환경에 맞춘 고급 배포 자동화 스크립트를 더 다듬어 드릴 수 있습니다.

답글 남기기