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

ano*_*one 12 reverse-proxy nginx

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

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

他们看起来像这样:

[07/Sep/2011:05:49:04 -0700] - "400" 0 "-" "-" "-"
Run Code Online (Sandbox Code Playgroud)

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

2011/09/07 05:09:28 [info] 5937#0: *30904 client closed prematurely connection while reading client request line
Run Code Online (Sandbox Code Playgroud)

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

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个结果中的任何一个.

谢谢!


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

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

Ros*_*117 8

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

以下是一些更多信息:http://www.ruby-forum.com/topic/2953545

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


pal*_*int 0

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

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