← 전체 글로 돌아가기

서버 운영

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를 써야 할까

몇 가지 예외 상황이 있다:

  1. SSL 인증서를 갱신했을 때 — 설정 파일은 같은데 디스크의 파일이 바뀐 경우
  2. 포트 번호를 변경했을 때 — 기존 연결 때문에 새 포트가 안 열릴 수 있음
  3. 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는 습관처럼 하는 게 좋다.