我在nginx error.log中有错误:
2010/12/05 17:11:49 [info] 7736#0: *1108 client closed prematurely connection while sending to client,
client: 188.72.80.201, server:***.biz, request: "GET /forum/ HTTP/1.1",
upstream:"http://***:3000/forum/", host: "***.biz"
我每次都有500个响应代码。我该如何解决这个问题?
谢谢。
答案 0 :(得分:16)
设置proxy_ignore_client_abort on;
可能会对您有所帮助。
答案 1 :(得分:11)
我今天长时间自己解决了这个问题并找到了解决方案:
请注意,此修复程序仅在使用负载均衡器时影响您
检查您的负载均衡器空闲超时。我将ELB空闲超时设置为60秒(默认),并且当请求挂起时,它在给定时间后关闭连接。但由于ELB在nginx之前,nginx正在记录“客户端”(在本例中为ELB),正在关闭连接。
因此,如果您使用的是ELB,请转到:
EC2 - >负载均衡器 - >选择正确的 - >如果您正在使用其他负载平衡器,请在说明中向下滚动并更改空闲超时,检查其配置和超时。
另请注意,您可能仍需要更改代理超时等。
答案 2 :(得分:7)
我发现如果关闭代理缓冲区帮助
http {
proxy_buffering off;
...
}
缓冲区可能太小或太少。 更改缓冲区大小后,它很好用
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 2048 8k;
答案 3 :(得分:2)
我遇到了同样的问题,并对此进行了研究。在我的情况下,这只发生在Webkit(Chrome)浏览器上。如果只加载单个资源,它们会以更快的方式打开连接。在这种情况下,多余的连接不合适地关闭或至少不通过它发送任何HTTP动词。这导致nginx中提到的错误。
关于#1答案: 非提议的解决方案有助于合理,因为这与代理无关。
关于#2答案: proxy_ignore_client_abort on; 在我的测试中不有帮助。
不幸的是,除了使用
之外,我找不到其他解决方案error_log off;
答案 4 :(得分:1)
我有同样的问题,发现nginx因send_timeout设置而关闭了连接。我增加了它并且它是固定的。
http
{
send_timeout 20;
...
}
答案 5 :(得分:-3)
fastcgi_ignore_client_abort on
肯定会解决问题。
答案 6 :(得分:-19)
从error_log
更改为warn
时,我已开始看到此消息。还原解决了这个问题。