刚刚注意到这个问题,在请求大文件时,源站到反向代理之间的数据流量一直在走,但是反向代理却一直不发数据出来,客户端浏览器一直处于等待状态,反向代理缓存完源站传来的数据后,客户端才能成功请求到数据。这样导致没有缓存的视频基本上没法看。 不是说NGINX可以边收边发吗,有人知道怎么解决吗,我尝试在配置中添加 proxy_buffering off; 没有变化。
尝试关闭缓存后正常了,但都是静态大文件,不缓存不行啊。 proxy_pass http://10.10.10.10:80/; proxy_set_header Host $host; proxy_cache_key $scheme$host$request_uri; proxy_cache appnode_proxy_cache_zone_of_site_fileserver; proxy_cache_valid 200 180d; proxy_cache_min_uses 1; proxy_cache_methods GET HEAD; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; proxy_cache_revalidate on; proxy_cache_lock on; proxy_cache_lock_timeout 90s; 这个缓存配置有什么问题吗?
更新:测试.zip文件正常。看来只是视频存在这样的问题……刚看到NGINX有个MP4模块,是不是得安装上这个东西?
我查了些资料,说从NGINX 1.9.8版本开始可以编译进一个 ngx_http_slice_module 模块,以支持 range 请求的回源。
如果要用到到后端的Range请求,可以参考下nginx的缓存切片功能: https://nginx.org/en/docs/http/ngx_http_slice_module.html
虚竹 如果要用到到后端的Range请求,可以参考下nginx的缓存切片功能: https://nginx.org/en/docs/http/ngx_http_slice_module.html