nginx做大文件缓存,有什么样的方案?

文件有2G, 且有大量并发下载相同的文件,如何有效配置缓存?
能否让缓存分块,提高单节点下载的速度?

使用cdn可以解决这个问题,源发布cdn不同节点。

大文件拆分为小文件进行分段缓存。Nginx Slice + Apach Traffic Server 作为一个大文件的缓存方案。

指定要nginx了,那就这个搞吧
这是教程
https://blog.csdn.net/guowenyan001/article/details/50836490
这是官方文档
https://www.nginx.com/resources/wiki/modules/slice/
nginx支持把文件切割后分发。

因为应用服务器(Jetty)里面实现了上传时写了进度条。经过缓存。就没法读取到进度了。此外,在Nginx处缓存文件,也降低了传输效率。
nginx采用1.5.6。
后端采用nodejs+formidable的方式接受上传文件,本问题的对应与采用什么样的后端没太大关系,这里只是交代一下。
问题:
在前端页面上将文件上传,nginx没有将每一块收到的文件数据块转发给后端,而是全部缓存了下来,全部收取完成后再一块一块的转发给后端,显而易见的是上传时间就被延长了许多。
涉及问题的模块:ngx_http_core_module
对应方法:
将nginx的版本升级到1.7.11以上。
添加指令:proxy_request_buffering off
指令说明如下图:

参考:
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering
重启nginx,即可解决。
通过此方案解决了好多Nginx上传文件全部缓存的问题,解决方案也不止本文一个方法,还有其他的,欢迎大家多多分享自己的解决方案。
您可能感兴趣的文章:
nginx修改上传文件大小限制的方法
nginx:413 Request Entity Too Large的处理办法--修改 PHP上传文件大小
nginx上传文件大小报错500的解决办法