nginx反向代理下载文件失败处理
最近遇到了从服务器下载文件失败时的情况。
修改代码,百思不得其解。
于是搬出终极武器,fiddler,抓包跟踪。
最终发现 server didn't return a complete response...return 8192 byte。。。等信息
突然就反应过来,文件下载的时候,没有下载完毕,服务器就给拒绝了。
难怪本地可以成功下载。
究其原因,就是服务器无法返回超过一定大小的文件数据了。因为是nginx反向代理,所以直接定位到反向代理的配置文件。
找到
location / {
...
# 添加如下语句
proxy_buffer_size 512k;
proxy_buffers 4 512k;
proxy_busy_buffers_size 512k;
proxy_temp_file_write_size 512k;
}
保存退出
sudo nginx -s reload
再次尝试下载。成功。
如果你的文件还会更大,那么根据需求调整大小,如果文件很大,同时不知道具体有多大
还可以直接
proxy_buffering off;
禁用服务器缓存
同时你还可以设置更长的超时时间
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
本文希望能对你有用。