Infra/Apache | Nginx

[NginX] NginX 502 Error 문제 해결

koh1018 2023. 4. 28. 01:40
반응형

잘 실행되던 서비스가 다운되는 일이 생겼다...

Github Action 에서 수동으로 재배포해주면 해결되긴 하였는데, 다운되는 일이 최근 잦아졌다.

 

백엔드 엔드포인트 url로 접속하면 위와 같이 502 에러가 떴다. (필자는 CloudFlare를 앞에 붙여둬 CloudFlare의 에러화면이 뜬다.)

 

아무리 개인 프로젝트라해도 적지 않은 사람들이 사용하는 서비스인데 문제가 있다 판단하였고 바로 해결을 시도하였다.

 

하지만 생각보다 문제 원인을 찾기가 쉽지않았다.

 

구글링, 개발관련 오픈톡방, ChatGPT, 지인 등을 총동원해 원인을 분석해보았다.

 

먼저 CloudFlare에서 문제가 발생한게 아닐지 확인해보았다.

하지만 이전에 문제 발생 시, 재배포해주면 해결되었기에 이는 CloudFlare의 문제보다는 AWS의 EC2 또는 웹서버 또는 WAS쪽의 문제라고 생각이들어 우선 넘어갔다.

 

이후로 ec2 자체가 다운되는게 아닌지 확인해보았다.

프리티어를 사용중이었기에 충분히 가능한 이야기였다.

 

하지만 CPU 사용률에서 문제가 될만한 부분은 발견되지 않았고, free와 top 명령어를 통해 메모리 사용량을 계산해본 결과 37프로 정도 사용하고 있었다.

 

때문에 프리티어 할당량 초과 문제는 아닌 것 같았다.

 

다음으로 서버쪽에서 문제가 생긴 것이 아닌지 확인해보았다.

ps -aux | grep java를 통해 확인해봤을 때 프로세스는 살아있었다.

또 grep 명령어로 nohup.out에 찍힌 로그들도 확인해보았지만 정상적인 쿼리들만 나올 뿐 에러는 없는 것 같았다.

서버쪽 문제도 아닌 것 같았다..

 

이쯤에서 웹서버가 문제가 아닐까라는 합리적 의심이 들었다.

 

tail -f /var/log/nginx/error.log 명령어로 nginx의 에러로그를 확인하였는데 502 에러를 뱉고 있었다.

이에 nginx가 제대로 listen하고 자바앱쪽으로 패스를 잘 해주는지 확인해보기로 하였다.

 

여기서 문제를 발견하였는데, 필자는 NginX로 무중단 배포를 구현해뒀었다.

문제는 etc/nginx/nginx.conf의 location에 proxy_pass의 포트 값이 8081로 적혀있는데 WAS의 포트는 8082였던 것이다.

즉, nginx 설정에 명시된 포트번호와 실제 서버의 포트 번호가 달라 생기는 문제였다..

 

알고보니 별거 아니였지만 문제의 원인을 찾기가 무척 어려웠던 것 같다.

그래도 덕분에 이후 서버에 문제가 생겼을 때 어느 지점에서 문제가 발생했는지 더 빠르게 파악할 수 있을 것 같다.

반응형

'Infra > Apache | Nginx' 카테고리의 다른 글

[Web Server] 웹 서버란? (웹 서버와 WAS의 차이)  (0) 2023.01.25