Python 502使用Nginx+;樱桃味

Python 502使用Nginx+;樱桃味,python,firefox,nginx,wsgi,cherrypy,Python,Firefox,Nginx,Wsgi,Cherrypy,我有一个Python应用程序,通过CherryPy的WSGI服务器提供服务,接收来自Nginx的请求。它托管在Windows Server 2003机箱上,只有少数用户访问它 有时,在Firefox上,对特定资源的请求几乎会立即失败,因为有一个502坏网关。我试图在其他浏览器上重现这个问题,但没有成功 应用程序的启动方式如下: paths = { "/resource": resource_func } dispatcher = wsgiserver.WSGIPathInfoDispatcher

我有一个Python应用程序,通过CherryPy的WSGI服务器提供服务,接收来自Nginx的请求。它托管在Windows Server 2003机箱上,只有少数用户访问它

有时,在Firefox上,对特定资源的请求几乎会立即失败,因为有一个502坏网关。我试图在其他浏览器上重现这个问题,但没有成功

应用程序的启动方式如下:

paths = { "/resource": resource_func }
dispatcher = wsgiserver.WSGIPathInfoDispatcher(paths)
server = wsgiserver.CherryPyWSGIServer(("127.0.0.1", 9191), dispatcher)
server.start()
nginx服务器正在通过代理传送将请求转发到CherryPy:

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,然后在出现502时打开nginx错误日志,我会看到以下错误:

(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;
版本如下:

  • 火狐21
  • Python 2.7.5
  • nginx1.2.0
  • CherryPy 3.2.2

什么可能导致错误?

当我看到这一点时(不是CherryPy,而是Gunicorn/others),这是因为服务器正在重新启动,Nginx无法连接到它。服务器上是否发生了其他可能导致CherryPy重新启动的事件?

我从脚本启动WSGI服务器,除非CherryPy在内部重新启动其任何组件,否则在看到错误时不会停止。我发现有趣的是我只能在Firefox上复制它。。。我也看过了,但日志上的错误不一样。