我想使用 Nginx 安全链接模型并重写来创建一个安全的 URL。因此,安全链接应如下所示:
http://example.com/media/ZYSwFWTSM8DHh8CNupbbzw/1593525536/videos/tmp/793.mp4
并将其重写为:
http://example.com/media/videos/tmp/793.mp4?md5=ZYSwFWTSM8DHh8CNupbbzw&secure=1593525536
最后打开这个视频链接:
http://example.com/media/videos/tmp/793.mp4
这是我的 Nginx 服务器配置:
location /media {
rewrite /videos/([a-zA-Z0-9_\-]*)/([0-9]*)/tmp/(.*)\.mp4$ /media/videos/tmp/$3.mp4?md5=$1&expires=$2;
}
location /media/videos {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri SecretWord";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}
问题是,当我尝试打开这些安全链接时,出现“403 Forbidden”错误:
http://example.com/media/ZYSwFWTSM8DHh8CNupbbzw/1593525536/videos/tmp/793.mp4
尽管这些链接运行良好:
http://example.com/media/videos/tmp/793.mp4?md5=ZYSwFWTSM8DHh8CNupbbzw&secure=1593525536
此外,当我删除 secure_link 模型配置并尝试此链接时:
http://example.com/media/ZYSwFWTSM8DHh8CNupbbzw/1593525536/videos/tmp/793.mp4
视频正常工作。
所以我真的不知道问题是什么,因为重写配置或secure_link_module本身可以工作,但它们不能一起工作。
答案1
尝试这个
location /securemedia {
rewrite /securemedia/([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)$ /media/videos/$3?md5=$1&expires=$2;
}
location /media/videos {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri SecretWord";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}
示例网址 http://example.com/securemedia/ZYSwFWTSM8DHh8CNupbbzw/1593525536/videos/tmp/793.mp4