2010-06-02 2 views
1

나는 파이썬 토네이도 서버를 nginx 프론트 엔드 뒤에 앉아있다. 지금 당장은 아니지만 매번 502 오류가 발생합니다. 내가 Nginx에 접근 로그에보고 나는이를 참조하십시오 HTTP 502 오류를 어떻게 디버깅합니까?

127.0.0.1 - - [02/Jun/2010:18:04:02 -0400] "POST /a/question/updates HTTP/1.1" 502 173 "http://localhost/tagged/python" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3" 

및 오류 로그에

:

2010/06/02 18:04:02 [error] 14033#0: *1700 connect() failed (111: Connection refused) 
while connecting to upstream, client: 127.0.0.1, server: _, 
request: "POST /a/question/updates HTTP/1.1", 
upstream: "http://127.0.0.1:8888/a/question/updates", host: "localhost", referrer: "http://localhost/tagged/python" 

나는 오류가 토네이도 로그에 표시 생각하지 않습니다. 이 디버깅에 대해 어떻게 생각하세요? 이것을 디버깅하는 데 도움이되는 토네이도 또는 nginx 구성에 넣을 수있는 것이 있습니까?

+0

대부분은 nginx가 업스트림 헤더 (내용이있는 201 개)의 유효성을 검사하지 못하거나 4K 오류 버퍼를 손상시키는 많은 오류 (주의 사항)가 기록 된 경우 결과입니다. – ppostma1

답변

2

오류 로그의 내용은 매우 유용합니다. 그것은 연결이 업스트림에 의해 거부되었다고, 그것은 클라이언트 IP, Nginx 서버 설정, 요청 라인, 호스트 이름, 업스트림 URL 및 참조를 포함하고있다.

이유를 찾으려면 업스트림 (또는 방화벽)을 봐야합니다.

Nginx가 요청을 처리하는 방법을보고 싶다면 왜 특정 서버 및 위치 섹션을 선택해야합니까? 아름다운 "디버그"모드가 있습니다. (Nginx 바이너리는 디버깅 심볼을 포함하여 빌드해야합니다.) 그 다음 :

error_log /path/to/your/error.log debug; 

은 모든 요청에 ​​대해 디버깅을 켭니다. 오류 로그에있는 정보를 디버깅하려면 해석하는 데 약간의 시간이 필요하지만 그만한 가치가 있습니다.

트래픽이 많은 사이트의 경우 "있는 그대로"사용하지 마십시오! 그것은 많은 정보를 생성하고 오류 로그는 매우 빠르게 증가합니다. 그것은 특정 클라이언트 IP 주소 만에 디버깅 변합니다

events { 
    debug_connection 1.2.3.4; 
} 

: 프로덕션에서 디버그 요청해야하는 경우, debug_connection 지시어를 사용합니다.

관련 문제