nginx反向代理时文件下载异常的一次排查

上周结果有客户投诉说不能正常下载账单,之前我以为是nginx的proxy_read_timeout设置引起的。因为我之前错误地把这个理解为nginx从后端读取返回的总时间限制。但是后来对这个参数的说明进行了进一步的查阅,发现不是这么个意思。

[text]
Defines a timeout for reading a response from the proxied server. A timeout is only set between two successive read
operations, not for the transmission of the whole response. If a proxied server does not transmit anything within this
time, a connection is closed.
[/text]
然后就只能自己测试下载文件,一切正常。后来是怀疑nginx没有正确返回Content-length:LENGTH或者是Transfer-Encoding:chunked,造成浏览器那边不能把文件下载完。但我在EC2上进行了测试,并tcpdump抓包查看,也没有任何异常,自己在Firefox下用httpfox查看查看也是正确返回了Content-length的(因为我们是把keepalive 关闭了的)。后来单独让同事找客户尝试下载,然后我去把nginx和apache上的日志都找出来了。发现apache上的日志显示返回的大小与该文件真实大小一致的,但是nginx的日志上显示传输的大小却小了很多。

今天晚上回到家后又测试了一下,因为家里的网络非常烂,但是测试了几次都能正常下载。考虑到之前我让同事转告客户那边换个chrome浏览器,但客户那边说无法下载其他浏览器,让我们给QQ传个文件过去,我就猜想对付是不是内部使用代理系统上网的,可能会引发很多这样那样的问题。

只能让对方再试试下载其他文件有没有问题了。如果还有问题肯定是对方内部网络的问题了。

此条目发表在nginx分类目录。将固定链接加入收藏夹。

发表评论