서버 운영
Nginx reload와 restart 무엇이 다를까
Nginx 설정을 변경했을 때 reload를 써야 하는지 restart를 써야 하는지 항상 헷갈렸다. 이번에 정리해봤다.
reload와 restart의 차이
Nginx는 역프록시나 웹서버로 자주 쓰는데, 설정을 변경할 때마다 헷갈리는 부분이 있다. nginx -s reload를 쓸지 systemctl restart nginx를 쓸지 말이다.
간단히 말하면 reload는 기존 연결은 끊지 않고 새 설정만 적용하고, restart는 프로세스를 완전히 재시작한다.
- reload: 기존 worker 프로세스는 유지, 새 요청부터 새 설정 적용. 진행 중인 연결은 끝까지 진행.
- restart: 전체 Nginx 프로세스 재시작. 모든 연결이 순간 끊김.
언제 reload를 쓸까
대부분의 상황에서는 reload면 충분하다. 설정 문법이 올바른지 먼저 확인하고:
sudo nginx -t
이후 reload:
sudo nginx -s reload
reload는 무중단 배포처럼 작동한다. 기존 요청을 처리하는 worker는 계속 실행되고, 새로 들어오는 요청만 새 master 프로세스에서 처리한다.
언제 restart를 써야 할까
몇 가지 예외 상황이 있다:
- SSL 인증서를 갱신했을 때 — 설정 파일은 같은데 디스크의 파일이 바뀐 경우
- 포트 번호를 변경했을 때 — 기존 연결 때문에 새 포트가 안 열릴 수 있음
- Nginx 바이너리를 업그레이드했을 때
이 경우들은 reload만으로 부족하니 restart를 써야 한다.
sudo systemctl restart nginx
확인해야 할 것
변경 후에는 반드시 확인해야 한다:
sudo systemctl status nginx
ps aux | grep nginx
curl -I https://your-domain.com
설정 문법 오류가 있으면 reload는 실패하고 기존 설정이 유지된다. 그래서 reload 전에 nginx -t는 습관처럼 하는 게 좋다.