尝试下载大文件时(不确定大小是否足够,尝试下载 5Gb),连接卡住:
$ wget --verbose http://example.net/large.zip -O /dev/null
--2016-12-14 12:52:38-- http://example.net/large.zip
Resolving example.net (example.net)... 1.2.3.4
Connecting to example.net (example.net)|1.2.3.4|:80... connected.
HTTP request sent, awaiting response...
这将永远持续下去,永远我的意思是至少 10 分钟。
此类文件的 nginx 配置:
location ~* ^.+\.(css|js|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
access_log off;
log_not_found off;
expires 7d;
}
小的静态文件(我的意思是小的,例如 50Mb 的)可以很好地服务。
关闭 access_log;“开启”没有帮助,此请求的日志中没有任何内容。
将文件类型从 zip 更改为另一种类型并没有帮助。
最奇怪的是,如果我开始下载并在重新启动 nginx 之后,下载开始就好了。但只有这一个。如果您在服务器重新启动后开始另一个下载,它不会以相同的方式工作。
对我来说,补救措施是这两个设置:
在文件中:
/etc/nginx/nginx.conf
添加:
行
client_max_body_size 128M;
与之间server_names_hash_bucket_size 256;
:答案似乎在这些链接中。一,二。基本上,禁用磁盘缓存
哎呀我的错误。
在这台服务器前面配置了一个 CDN。在开始提供这些文件之前,它需要太多时间才能完全获取这些文件。这就是为什么当我重新启动 nginx 时下载立即开始的原因。CDN 提供了不完整的文件。