2010-06-02 88 views
1

我有一个坐在nginx前端后面的Python龙卷风服务器。每隔一段时间,但不是每一次,我都会得到一个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" 

我不认为任何中的错误日志龙卷风显示。你将如何去调试呢?有什么我可以放在Tornado或nginx配置来帮助调试吗?

+0

大多数人会发现,这是nginx无法验证上游头文件(含内容的201)时的结果,或者记录了如此多的错误(Notices)以至于打破了4k错误缓冲区。 – ppostma1 2014-01-09 16:56:26

回答

2

在我看来,来自错误日志的行非常丰富。它表示连接被上游拒绝,它包含客户端IP,Nginx服务器配置,请求线,主机名,上游URL和引用。

这很清楚你必须看着上游(或防火墙)找出原因。

如果您想了解Nginx如何处理请求,为什么选择特定的服务器和位置部分 - 有一个美丽的“调试”模式。 (注意,你的Nginx二进制文件必须包含调试符号)。然后:

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

将打开所有请求的调试。在错误日志中调试信息需要一些时间来习惯解释它,但是值得努力。

请不要对高流量网站使用“原样”!它会产生大量信息,您的错误日志将会非常快速地增长。如果您需要在生产调试的请求,使用debug_connection指令:

events { 
    debug_connection 1.2.3.4; 
} 

原来的调试上只对特定的客户端IP地址。