서버 운영
Nginx 서버에서만 실패할 때 확인하는 순서
로컬에서는 잘 작동하지만 Nginx를 통해서만 요청이 실패할 때, 단계별로 진단하는 방법입니다.
로컬 개발 환경에서는 문제없는데, Nginx 리버스 프록시를 거친 프로덕션 환경에서만 요청이 실패한다면, 대개 캐시, 헤더, 또는 프록시 규칙의 차이일 가능성이 높다. 처음부터 완벽한 답을 찾으려고 하면 오히려 시간이 더 걸린다.
첫 번째 단서: 도메인 연결 확인
먼저 도메인이 제대로 해석되고 있는지 확인하자.
dig example.com
curl -I https://example.com
응답 헤더를 보면 Nginx가 제대로 작동하고 있는지, 어떤 Status 코드가 돌아오는지 알 수 있다. 리다이렉트 (301, 302), 캐시 헤더, CORS 헤더 등이 예상대로인지 확인한다.
Nginx 설정 검증
sudo nginx -t
Nginx 설정 파일에 문법 에러가 없는지 먼저 확인한다. 설정이 올바르면 이 명령이 "successful"을 출력한다.
캐시와 프록시 규칙 확인
Nginx의 프록시 캐시가 활성화되어 있으면, 구 버전의 응답을 계속 반환할 수 있다. 다음을 확인해보자:
- Nginx가 캐시를 하고 있는가
- 캐시 유효 기간은 적절한가
- 특정 엔드포인트는 캐시를 무시해야 하지 않은가
프록시 헤더(X-Forwarded-For, X-Forwarded-Proto 등)가 제대로 전달되고 있는지도 중요하다. 애플리케이션이 프로토콜이나 IP를 잘못 감지할 수 있다.
진단 체크리스트
- 도메인 DNS 해석 확인 —
dig로 IP가 올바른가 - Nginx가 요청을 받고 있는가 — curl로 응답 헤더 확인
- Nginx 설정 문법은 올바른가 —
nginx -t로 검증 - 프록시 규칙이 올바른가 — 요청이 올바른 백엔드로 전달되는가
- 캐시 설정은 적절한가 — 구 응답을 계속 반환하지 않는가
- 헤더 전달이 올바른가 —
X-Forwarded-*헤더가 존재하는가 - 배포 후 재확인 — 설정 변경 후 실제로 문제가 해결되었는가
한 번에 여러 설정을 변경하지 말고, 하나씩 검증하면 원인이 명확히 드러난다.