如果没有重新启动或修改configuration,nginx有时会发送不完整的响应。 今天,我可以复制,但仍然不知道什么是错的或如何修复。
我把一个5MB的文件放到nginxconfiguration使用的站点的位置/别名path。 没有php5-fpm,模块等只有nginx提供静态文件。
testing时,没有其他用户访问服务器,除我的testing请求外没有其他用户访问。
下载失败,谷歌浏览器在stream量日志中显示,有2个请求,虽然我只把下载的http url放在一次,没有我自己发起的redirect或其他第二个请求。
同样的问题在服务器的access.log,也是如此:
[14 / May / 2014:14:06:53 +0200]“GET /dev/test_test.m4v HTTP / 1.1”206 1“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36壁虎)Chrome / 32.0.1700.107 Safari / 537.36“
[14 / May / 2014:14:06:53 +0200]“GET /dev/test_test.m4v HTTP / 1.1”200 130680“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36 Gecko)Chrome / 32.0.1700.10
[14 / May / 2014:14:07:15 +0200]“GET /dev/test_test.m4v HTTP / 1.1”206 1“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36壁虎)Chrome / 32.0.1700.107 Safari / 537.36“
[14 / May / 2014:14:07:15 +0200]“GET /dev/test_test.m4v HTTP / 1.1”200 114684“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36 Gecko)Chrome / 32.0.1700.10
你可以看到,总是有一个请求的响应大小= 1,另一个大小混合,但> 1。 但是,浏览器中的结果总是相同的。 =>响应失败,下载失败。
为了确保它与http状态/响应206 max_ranges 0; ,我添加了max_ranges 0; 到configuration并重试 – > test2。
[14 / May / 2014:14:11:36 +0200]“GET /dev/test_test.m4v HTTP / 1.1”200 152460“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36壁虎)Chrome / 32.0.1700.107 Safari / 537.36“
[14 / May / 2014:14:11:38 +0200]“GET /dev/test_test.m4v HTTP / 1.1”200 142296“ – ”“Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36壁虎)Chrome / 32.0.1700.107 Safari / 537.36“
在浏览器中的结果相同。 总是失败的下载/请求和access.log中的大小总是不同的,如随机块或响应大小。
服务器状态:iowait,RAM,cpu几乎空闲。 没有高负荷或限制。
这是一个已知的问题或错误还是你知道如何解决这个问题?
在这样简单的情况下,我敢肯定你的防火墙,IDS / IPS设备或者其他的服务器在你的nginx服务器之前,会干扰下载。 如有疑问,请联系您的ISP。