我正在尝试获取用于视频工作的损坏(?)脚本,如果使用直接链接而不是过期链接,我在返回 403 时遇到问题。
我目前可以像这样获得 URL 的安全/隐藏和过期;domain.org/media/ X2lkdmFSZHZ1MU40dmhnM3E0V2lNQQ,1370948784 /flv/38.flv
文件位于 /home/srv/public_html/media/videos/flv
但是,如果您仍然知道正确的路径,则可以直接从 URL 获得视频文件;domain.org/media/vidoes /flv/38.flv _
以下是创建安全链接并为 flv 文件提供渐进式流式传输的相关代码部分。
$config['nginx_key'] = 'TOPSECRET';
$config['nginx_prefix'] = '/media/';
$file_sd = '/flv/' .$video_id. '.flv';
$time = time()+ 3600;
$md5hash_sd = md5($time . '.' . $file_sd .'.' . $config['nginx_key'], true);
$md5hash_sd = str_replace('=', '', strtr(base64_encode($md5hash_sd), '+/', '-_'));
// return result
$SD_URL = $config['BASE_URL'].$config['nginx_prefix']. $md5hash_sd . ',' .$time .$file_sd;
result; domain.org/media/X2lkdmFSZHZ1MU40dmhnM3E0V2lNQQ,1370948784/hd/38.mp4
这些是 nginx 规则;
location ~ ^/media/(?<secure>[\w\-=]+,\d+)(?<file>/.*\.flv)$ {
secure_link $secure;
secure_link_md5 $secure_link_expires.$file.TOPSECRET;
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
alias /home/srv/public_html/media/videos$file;
flv;
}
我的问题是,如果有人尝试直接访问 flv 文件而不是最终会过期的安全链接,有人可以在这里看到我如何无法返回 403。403 是唯一似乎不起作用的部分。
谢谢你的时间。- 博士