PHP利用nginx的X-sendfile控制下载,提高下载效率
2020-03-18 15:50
267 查看
为了控制静态文件下载,一般方法需要PHP用file_get_contents读取文件,再传给客户端。
节省资源的方法是利用nginx的x-sendfile模块
原理是 nginx 上设置一个特殊资源目录,客户端无法直接读取,需要经过php许可后才能下载。
1、设置nginx
location /request/uri/ { internal; alias /real/path/; }
目录 /request/uri/ 被设置为 internal, 所以客户端无法直接访问。
alias 对应的文件所在真实目录,一般这个目录不在公开目录下,也无法访问。
注意要设置生效。
nginx -s reload
2、访问php
// 验证是否有权限: 费这么大劲就是为了这个 // 获取要下载的文件名称: $p_file = '/request/uri/filename.ext'; // 告诉nginx放行: header('Content-type: application/octet-stream'); // 这里的$fileName = basename($p_file) 也就是 filename.ext header('Content-Disposition: attachment; filename="' . $fileName . '"'); // nginx sendfile header('X-Accel-Redirect: '.$p_file);
还有一些控制选项,需要提前 X-Accel-Redirect 发送
X-Accel-Limit-Rate: 1024 X-Accel-Buffering: yes|no X-Accel-Charset: utf-8
文档:https://www.nginx.com/resources/wik
相关文章推荐
- PHP利用nginx的X-sendfile控制下载,提高下载效率
- PHP利用nginx的X-sendfile控制下载,提高下载效率
- php nginx用x-sendfile控制文件下载权限
- 使用Nginx的X-Sendfile机制提升PHP文件下载性能
- 利用Nginx的X-Accel-Redirect头实现下载控制(附带php和rails实例)
- 利用Nginx的X-Accel-Redirect头实现下载控制(附带php和rails实例)
- 使用Nginx的X-Sendfile机制提升PHP文件下载性能
- 使用 Nginx 的 X-Sendfile 机制控制文件访问权限(php版)
- 在Nginx中使用X-Sendfile头提升PHP文件下载的性能(针对大文件下载)
- 使用 Nginx 的 X-Sendfile 机制提升 PHP 文件下载性能
- php以不同名字下载同一个文件(x-sendfile)
- 转:RoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能
- RoR网站如何利用lighttpd的X-sendfile功能提升文件下载性能
- Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
- 在PHP中使用X-SendFile头让文件下载更快
- PHP X-sendfile实现文件下载
- ngx_lua利用nginx内部跳转提高访问效率
- php 利用Fileinfo 获取文件MIME类型(finfo_open) 下载
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍
- 利用nginx的url_hash提高squid的缓存效率