http通过range下载文件,错误net::ERR_CONTENT_LENGTH_MISMATCH

代理缓存

首先,查看代理的缓存是否过小;如果过小, nginx 的 http 节点,可以设置后为

1
2
3
proxy_buffer_size 128k;
proxy_buffers 32 128k;
proxy_busy_buffers_size 128k;

Range 转发

Nginx 向后端服务器请求的时候是不会把 Range 参数加上的,而是会去请求整个文件,比方说有一个 1G 的文件,每次请求 1M,Nginx 会在每次请求的时候去后端请求一个完整的 1G 文件,然后取出其中的 1M 发给客户端,这个时候中间的流量会暴增,导致整个服务器宕机。

1
2
3
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_no_cache $http_range $http_if_range;