2013-06-19 2 views
2

Nginx에서 요청을 수신하는 CherryPy의 WSGI 서버를 통해 Python 응용 프로그램을 제공합니다. Windows Server 2003 상자에서 호스팅되며 일부 사용자 만 액세스 할 수 있습니다.502 Nginx + Cherrypy를 사용하는 WSGI 응용 프로그램의 잘못된 게이트웨이

때때로 특정 리소스에 대한 요청이 502 Bad Gateway Firefox에서 거의 즉시 실패합니다. 나는 성공하지 못했지만 다른 브라우저에서 문제를 재현하려고했습니다.

애플리케이션은 다음과 같이 개시된다 :

paths = { "/resource": resource_func } 
dispatcher = wsgiserver.WSGIPathInfoDispatcher(paths) 
server = wsgiserver.CherryPyWSGIServer(("127.0.0.1", 9191), dispatcher) 
server.start() 

의 nginx 서버 proxy_pass 통해 CherryPy에 요청을 전달한다 :

$.ajax(requestURI).done(myRequestCallback); 
:

location/{ 
    proxy_pass   http://127.0.0.1:9191/; 
    proxy_redirect  off; 

    proxy_set_header Host    $host; 
    proxy_set_header X-Real-IP  $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

요청은 jQuery.ajax 방법을 통해 보내진다

파이어 버그를 실행 한 다음 502가 발생하면 nginx 오류 로그를 엽니 다. 다음과 같은 오류 : xxx.xxx.xxx.xxx가 IP입니다

(time): *92 WSASend() failed (10054: An existing connection was forcibly closed by the remote host) while sending request to upstream, client: xxx.xxx.xxx.xxx, server: localhost, request: "GET /resource?params=VALUES&_=1371674388573 HTTP/1.1", upstream: "http://127.0.0.1:9191/resource?params=VALUES&_=1371674388573", host: "xxx.xxx.xxx.xxx:9080", referrer: "http://172.27.129.112:9080/myAppPage.html" 

이 ...있는 나는 응용 프로그램을 테스트하고있어,와의 nginx는 9080 듣고있다.

실패한 요청은 Google 앱의 로그 파일에 표시되지 않으며 동일한 리소스와 매개 변수가 유효합니다 (모든 시도에서 요청이 실패하지 않음).

이 난 문제를 해결하려고 (다음 두 서버를 다시 시작) 내 nginx.conf 파일에 다음 줄을 추가했습니다,하지만 바깥 차이를 보이지 않았다

proxy_buffers 8 16k; 
proxy_buffer_size 32k; 

버전은 다음과 같습니다

  • 파이어 폭스 (21)
  • 파이썬 2.7.5
  • 의 nginx 1.2.0
  • CherryPy 3.2.2

무엇이 오류의 원인 일 수 있습니까?

답변

0

내가 본 (CherryPy가 아니라 Gunicorn/기타)을 보았을 때 서버가 다시 시작되고 Nginx가 연결할 수 없었기 때문입니다. CherryPy를 다시 시작할 수있는 서버에서 다른 일이 발생합니까?

+0

스크립트에서 WSGI 서버를 시작하고 CherryPy가 내부적으로 구성 요소를 다시 시작하지 않으면 오류가 표시 될 때까지 중지되지 않습니다. 내가 흥미를 끈 것은 Firefox에서만 재현 할 수 있다는 것입니다. 나는 [이 질문]을 보았습니다. (http://stackoverflow.com/questions/3704626/nginx-502-bad-gateway-error-only -in-firefox)하지만 로그에서 같은 오류가 아닙니다. – Fernando

관련 문제