본문 바로가기
Q&A해결2024년 9월 5일1분 읽기

Nginx 502 Bad Gateway 해결 방법

서
서버지기영호
조회 692댓글 2

서버에서 Nginx를 리버스 프록시로 사용하고 있는데, 갑자기 502 Bad Gateway 에러가 발생합니다.

# /etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name myapp.com;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
    }
}

Node.js 앱이 3000번 포트에서 돌고 있는데, 어제까지는 잘 됐거든요. Nginx error log에는 "connect() failed (111: Connection refused)" 라고 나옵니다. PM2로 관리 중인데 pm2 status 보면 online으로 나옵니다.

댓글 2

김김영삼2년 전

502 에러 + "Connection refused"는 Nginx가 백엔드에 연결하지 못한다는 뜻입니다. PM2 online이어도 실제로 포트를 안 열고 있을 수 있어요.


확인 순서:


# 1. 포트 실제 열려있는지 확인
ss -tlnp | grep 3000

# 2. 앱이 실제로 응답하는지 확인
curl -v http://localhost:3000

# 3. PM2 로그 확인 (앱 에러가 있을 수 있음)
pm2 logs --lines 50

# 4. 앱이 127.0.0.1이 아닌 0.0.0.0에 바인딩되어 있는지 확인
# Node.js에서 app.listen(3000, '0.0.0.0', ...) 인지 확인

자주 있는 원인들:



  • 앱이 크래시 후 재시작 중 (PM2가 online으로 표시하지만 아직 포트 안 열림)

  • 메모리 부족으로 앱이 제대로 동작 안 함 → free -h 확인

  • 앱이 IPv6(::1)로만 listen하고 Nginx는 IPv4(127.0.0.1)로 접근


pm2 logs부터 확인해보시고, 앱 자체에 에러가 없는지 봐주세요!

서서버지기영호김영삼2년 전

pm2 logs 확인했더니 메모리 부족으로 앱이 계속 재시작되고 있었네요. 메모리 늘리니까 해결됐습니다. 감사합니다!

Ctrl+Enter로 등록