在debugging我们的访问日志的同时,我们看到了相当多的状态代码400的结果。
他们看起来像这样:
[07/Sep/2011:05:49:04 -0700] - "400" 0 "-" "-" "-"
我们已经启用了debugging错误日志logging,并且他们通常对应于这样的东西:
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
无济于事。
为什么发生这种情况?
这是一个退缩的nginx反向代理 – > apache后端服务器。
值得一提的是,我们网站上的独特内容types是相当less的。 我们已经使用许多浏览器testing了这个,并且没有亲自接收这400个结果中的任何一个。
谢谢!
更详细的url详细logging日志中的类似条目:
http://blog.rayfoo.info/2009/10/weird-web-server-access-log-entries
我发现这是由于使用Chrome
,这显然打开额外的连接,偶尔没有发送任何数据。
这里有一些更多的信息: http : //www.ruby-forum.com/topic/2953545
现在的问题是如何处理它们 – 答案并不是很令人满意。
你正在处理SSL连接? 你可以添加$ssl_cipher $ssl_protocol
到你的访问日志格式?
首先,您的客户很可能会发送带有很大的http头或网址的请求。 也许你的应用程序的旧版本设置了一些(可能是大的)现在没有使用的cookie,有些客户端仍然在尝试发送它们。
我将头缓冲区设置为一个非常大的值,并在应用程序方面记录头/请求的大小和完整的请求,如果他们比平常大。 或者完全从链中取出nginx,并以相同的条件记录标题/请求。 如果可以的话,只需将那些出现400错误的IP /子网的nginx取出。 我想Nginx可以记录这些400错误的源IP。