본문 바로가기
Infra2026년 6월 17일2분 읽기

nginx 502 Bad Gateway, 원인부터 잡기

YS
김영삼
조회 314
nginx 502 Bad Gateway, 원인부터 잡기

핵심 요약

502 Bad Gateway는 nginx 자체가 아니라 뒤에 있는 앱(업스트림)에서 제대로 응답을 못 받았다는 뜻이다. ① 앱이 죽었는지, ② proxy_pass 주소/포트·소켓 경로가 맞는지, ③ 응답이 타임아웃됐는지, ④ (소켓이면) 권한 문제인지 순서로 본다. nginx 에러 로그가 정확한 원인을 알려준다.

1. 점검 순서

# 1) nginx 에러 로그가 1순위
tail -f /var/log/nginx/error.log
# 2) 앱이 떠 있는지
curl -I http://127.0.0.1:3000
systemctl status myapp

2. 원인별

로그 단서원인
Connection refused앱 다운/포트 불일치
upstream timed out앱 응답 지연 → proxy_read_timeout↑
permission denied(소켓)nginx 유저가 소켓 접근 불가

3. 함정

  • 앱은 살아있는데 127.0.0.1 대신 잘못된 호스트로 listen → refused
  • 대용량 응답·웹소켓은 버퍼·업그레이드 헤더 설정 필요
  • SELinux/AppArmor가 nginx의 네트워크/소켓 접근을 막기도 한다

자주 묻는 질문

502인지 504인지 차이가 뭔가요?

502는 업스트림에서 유효하지 않은 응답(주로 연결 실패), 504는 업스트림이 시간 내 응답하지 않은 타임아웃입니다. 504면 앱이 느린 것이니 처리 시간이나 타임아웃 설정을 보세요.

앱은 켜져 있는데 502가 납니다.

nginx가 보는 주소/포트와 앱이 실제 바인딩한 주소가 다를 가능성이 큽니다. 127.0.0.1:포트로 직접 curl해 확인하세요.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록