욱'S 노트

Nginx - 502 Bad Gateway 해결법 본문

Programming/Nginx

Nginx - 502 Bad Gateway 해결법

devsun 2015. 8. 11. 14:53

많은 경우 우리는 브라우져를 통해 Nginx에서 502 Bad gateway 오류가 발생했다는 메시지를 볼 수 있다. 웹서버 로그를 확인하면 왜 이러한 메시지가 발생했는지를 확인할 수 있다. 그리고 여기서는 어떻게 그 상황을 해결할 수 있는지에 대해서 설명한다.


502 bad gateway 오류가 발생 했을 때 아래 상황인지를 확인해 보자.


Nginx running as proxy for Apache web server.

Nginx running with PHP-FPM daemon.

Nginx running with other services as gateway.

Bad buffering/timeout configuration


모든 옵션들에 대해 깊게 들어가기 전에 에러 메시지가 의미하는 것이 무엇인지를 이해해야 한다. 502 에러란 게이트웨이에서 발생했다는 것을 의미한다. 게이트웨이란 무엇인가? 심플하게 얘기하자면 한 서비스가 다른 서비스와 커뮤니케이션하는 엑세스 포인트, 브릿지를 의미한다. 이 경우 게이트웨이는 서비스나 어플리케이션일 수 있고 Nginx 웹서버로부터 요청을 받는 것일 수도 있다.


이제 502 메시지를 이해하기 위한 각 이유들은 다음과 같다.


Nginx as Proxy for Apache: 이 경우 게이트웨이는 아파치이다. 아파치를 위한 프록시로 nginx를 사용할 경우 아파치가 죽거나 잘못 설정되었을 때 502 에러를 유발할 수 있다. 어떻게 수정할 수 있냐면 많은 경우 아파치 웹서버를 재기동함으로서 이 상태를 제거할 수 있으나 왜 발생했는지에 대한 로그파일을 반드시 살펴보자.


Nginx with PHP-FPM: 아파치의 경우와 똑같다. php 데몬이 중단되었다고 상상해보라. 또는 요청에 의해 과부하 상태라고 생각해보자. nginx로부터 php 요청은 정상적으로 수행할 수 없을 것이고 에러가 발생할 것이다. 어떻게 고치냐고? php 데몬을 재시작하고 로그를 살펴보자.


Nginx with other services/apps: nginx 뒤에 있는 다른 서비스를 재시작하자 그리고 왜 발생했는지 이유를 로그에서 살펴보자.


다른 빠른 해결 방법은 다음과 같다.


1) http 블럭내 버퍼와 타임아웃을 증가시켜라.


http {

...

fastcgi_buffers 8 16k;

fastcgi_buffer_size 32k;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

...


}


2) 사용하고 있다면 APC 캐쉬를 비활성화 시키고 대신 Xcache를 사용하라. APC는 세그먼트 폴트로 인해 특정 환경에서 몇가지 이슈가 있다.


출처 : http://www.nginxtips.com





'Programming > Nginx' 카테고리의 다른 글

Nginx - Using nginx as HTTP load balancer  (1) 2016.03.24
Nginx - Beginner’s Guide  (0) 2016.03.24
Nginx - 설치 for centos  (0) 2016.03.23
Comments