首页 文章

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

提问于
浏览
12

我们最近实现了一个基于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个结果中的任何一个 .

谢谢!


进一步详细记录其日志中类似条目的URL:

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

3 回答

  • 1

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

    这里有更多信息:http://www.ruby-forum.com/topic/2953545

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

  • 8

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

  • 0

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

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

相关问题