У меня есть приложение Python, которое подается через WSGI-сервер CherryPy, получая запросы от Nginx. Он размещен в окне Windows Server 2003, и доступно только несколько пользователей.502 Плохой шлюз в приложении WSGI с использованием Nginx + Cherrypy
Иногда запросы к определенному ресурсу сбой заканчиваются почти мгновенно с помощью 502 Bad Gateway на Firefox. Я попытался воспроизвести проблему в других браузерах без успеха.
приложение запускается следующим образом:
paths = { "/resource": resource_func }
dispatcher = wsgiserver.WSGIPathInfoDispatcher(paths)
server = wsgiserver.CherryPyWSGIServer(("127.0.0.1", 9191), dispatcher)
server.start()
Сервер Nginx пересылает запросы на CherryPy с помощью proxy_pass
:
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:
$.ajax(requestURI).done(myRequestCallback);
Если я запустил Firebug, тогда откройте журнал ошибок nginx, когда произойдет 502, я вижу следующее сообщение об ошибке:
(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"
... где xxx.xxx.xxx.xxx
является IP, с которого я тестирую приложение и Nginx слушает 9080
.
Неудачные запросы не отображаются в файле журнала нашего приложения, и тот же ресурс и параметры действительны (запрос не прерывается при каждой попытке).
Я даже добавил следующие строки в мой файл nginx.conf (перезапуск затем оба сервера), чтобы попытаться решить эту проблему, но это не похоже, чтобы сделать ау разницу:
proxy_buffers 8 16k;
proxy_buffer_size 32k;
версии:
- Firefox 21
- Python 2.7.5
- Nginx 1.2.0
- CherryPy 3.2.2
Что может быть причиной ошибки?
Я запускаю WSGI-сервер из сценария, и если CherryPy не перезагрузит ни один из его компонентов, он не будет остановлен к моменту появления ошибки. То, что я нашел интригующим, это то, что я мог только воспроизвести его в Firefox ... Я также посмотрел на [этот вопрос] (http://stackoverflow.com/questions/3704626/nginx-502-bad-gateway-error-only -in-firefox), но это не та же ошибка в журнале. – Fernando