1 2 3 4 5 6 7 8 9 10 11 12
| $file_url= "g1/".$file_path; $file_name=$title.'.'.$file_ext;
header("Content-Type:application/octet-stream;charset=utf-8"); header('Content-Disposition: attachment; filename='.$file_name); header('X-Accel-Redirect: /filedfs/'.$file_url); header("X-Accel-Buffering: yes"); header("X-Accel-Limit-Rate :102400"); header("Accept-Ranges: none"); header("X-Accel-Charset: utf-8");
|
1 2 3 4 5 6
| location /filedfs/ { internal; proxy_pass http: }
|
首先在 php 里面设置了 X-Accel-Redirect
值为 /filedfs/ + fileurl .
然后 nginx 里面将 /filedfs/ 转发到固定的url .并设置连接为内部的 internal
.
遇到的问题 :
- 在配置
location
的时候. location
后面加了一个~
,变成了正则表达式匹配.导致 proxy_pass 后面不能够添加/
.
- 对于
nginx
的internal
的理解不足.
参考
- http://wiki.nginx.org/XSendfile
- http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/
- http://blog.csdn.net/h70614959/article/details/37766697
- http://blog.csdn.net/guichenglin/article/details/7737790