NGINX反向代理:许多html状态代码400响应,为什么?

时间:2011-09-07 12:52:09

标签: nginx reverse-proxy

我们最近实施了一个基于nginx的反向代理。

在调试我们的访问日志时,我们看到了相当多的状态代码400结果。

它们看起来像这样:

[07/Sep/2011:05:49:04 -0700] - "400" 0 "-" "-" "-"

我们已启用调试错误日志记录,它们通常对应于以下内容:

2011/09/07 05:09:28 [info] 5937#0: *30904 client closed prematurely connection while reading client request line

我们已经尝试过提高一些缓冲区,正如我们能够谷歌的几页所提到的那样。

http://www.ruby-forum.com/topic/173362

http://blog.craz8.com/articles/2009/06/17/nginx-400-bad-request-errors-due-to-cookies-and-what-to-do-about-them

无济于事。

为什么会这样?

这是一个strandard nginx反向代理 - > apache后端服务器。

值得一提的是,我们网站上独特的内容类型相当少。我们已经使用许多浏览器对此进行了测试,并且没有亲自接收这400个结果中的任何一个。

谢谢!


进一步详细说明日志中类似条目的网址:

http://blog.rayfoo.info/2009/10/weird-web-server-access-log-entries

3 个答案:

答案 0 :(得分:8)

我发现这是由使用Chrome引起的,显然偶尔会打开额外的连接,而不会发送任何数据。

以下是其他信息:http://www.ruby-forum.com/topic/2953545

现在的问题是如何处理它们 - 提供的答案并不令人满意。

答案 1 :(得分:1)

您是否正在处理SSL连接?您可以将$ssl_cipher $ssl_protocol添加到访问日志格式吗?

答案 2 :(得分:0)

首先,您的客户端很可能使用非常大的http标头或网址发送请求。也许您的应用程序的旧版本设置了一些(可能很大)的cookie,这些cookie现在都没有使用,而且有些客户仍在尝试将它们发回去。

我将头缓冲区设置为一个非常大的值,并且在应用程序端记录头/请求的大小以及完整请求(如果它们比平常大)。或者从链中完全取出nginx并使用相同的条件记录标头/请求。如果可以,只为那些400错误来自的IP /子网取出nginx。我想nginx可以记录这400个错误的源IP。