
本篇内容
什么是X-Sendfile?
nginx X-Sendfile怎么样使用?
什么是X-Sendfile?
nginx x-sendfile
这样做有什么问题?这样做就意味着我们的程序需要将文件内容从磁盘经过一个固定的buffer去循环读取到内存,在发送给web服务器,最后才到达用户,当需要下载大文件的时候,将消耗大量的内存,甚至引发php进程超时或崩溃。Cache也会很头疼,更不用提中断重连的情况了!
一个理想的解决方式,由PHP程序进行权限检查等逻辑的判断,一切从后台通过,让web服务器直接发送文件给用户,像nginx这样的,更善于处理静态文件,这样php脚本就不会发生I/O阻塞了!
如何使用?
nginx默认支持这个特性,不需要加载额外的模块,只是实现的方式有些不同,需要发送的HTTP头为X-Accel-Redirect,另外配置文件里面需要这样写
这样用户就会下载到/some/path/protected/iso.img这个路径之下的文件
如果你想要发送的是/some/path/iso.img文件,那么nginx配置应该是这样的
RTGHWRT5HEWTHERTHDRWRTHWERTH