php 页面使用下面代码访问内部授权文件
header("X-Accel-Redirect: '物理绝对路径');
nginx 在location内配置internal标记表示内部访问,这样就禁止了http直接文件下载
示例代码:
php代码
$filePath = "/gofile/test.mp3";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename='test.mp3'");
header("X-Accel-Redirect: $filePath);
nginx配置
保护HTTP真实资源目录
location ^~ /files/ {
#拒绝访问
deny all;
}
虚拟目录授权下载
location ^~ /gofile/ {
# 仅限内部调用访问
internal;
# 软链链接真实目录
alias /var/www/files/;
# 下载1m后再限速
limit_rate_after 1m;
limit_rate 256k;
}
其它发挥你的想象力,用PHP代码逻辑去控制。