서버 운영
Nginx 설정이 배포 환경에서 막힐 때
로컬에서는 잘 도는데 Nginx 리버스 프록시 때문에 배포 환경에서 안 될 때의 해결 방법입니다.
로컬에서 괜찮았던 설정도 배포 환경에서는 다르게 보일 수 있다. 특히 Nginx 리버스 프록시가 들어가면 요청 흐름이 복잡해진다.
문제 상황 정의
Nginx 때문에 막힐 때는 매번 감으로 접근하면 같은 실수를 반복하게 된다. 미리 확인 순서를 정해두자. 트래픽이 어디서 막히는지 찾아야 한다.
확인 범위 좁히기
Nginx 설정이 문제라고 해서 모든 프록시 규칙을 의심하면 안 된다. 프록시 규칙의 흐름을 먼저 끊어서 본다. 특히 규칙이 애매하면 다른 부분을 고쳐도 결과가 안 바뀐다.
실제 동작 확인
DNS 부터 확인하고, 응답을 보고, 설정을 본다:
dig example.com
curl -I https://example.com
sudo nginx -t
dig로 도메인 해석이 제대로 되는지 확인한다. curl로 실제 응답을 받는다. nginx -t로 설정 파일에 문법 에러가 없는지 본다.
로컬과 운영 비교
local 환경에서는 localhost나 단순한 호스트명을 쓰지만, 배포 환경에서는 실제 도메인을 쓴다. 이 차이가 프록시 규칙에 반영되었는지 확인하자.
환경 변수나 설정 파일이 다를 가능성이 있다면, 각 환경에서 어떻게 설정되어 있는지 같이 적어두면 원인 추적이 쉬워진다.
작게 바꿔보기
cache 설정이나 DNS 응답 관련 문제라면, 가장 작은 변경부터 시작한다. 한 가지만 수정한 후 테스트하고, 결과를 기록한다.
HTTP status 코드가 뭔지 확인하는 것도 중요하다. 404가 나는 건지, 502가 나는 건지에 따라 원인이 완전히 다르다.
다음에 남길 기록
해결 자체보다 어떤 값이 달라졌는지 설명할 수 있는 상태가 더 중요하다. 비슷한 문제가 나중에 생길 때, 이번에 기록한 정보를 보면 훨씬 빠르게 대응할 수 있다.