我有几个小时试图理解并弄清楚它是如何工作的,并经过搜索和尝试了很多,但仍然......我头上没有留下头发:(
试用和错误的来源 http://nginx.org/en/docs/http/ngx_http_secure_link_module.html#variables Secure pseudo-streaming flv files Nginx secure link module not working with php files but working on static files nginx HttpSecureLinkModule php example
问题是如何让Nginx和php制作定时加密链接来播放视频?
最终输出看起来像
http://domain.tld/videos/529d86c4ff560cb559df7eb794aeb4b1/56f5bec4/5/4/d/f/e/54dfee5c43e6e.mp4
此视频的真实路径是
/var/www/domain.tld/media/videos/5/4/d/f/e/54dfee5c43e6e.mp4
如果可行的话,应该保持不变的php片段,因为它会不时地从开发者那里更新。
//generate lighttpd hash
function getMediaLink($filename) {
global $modsec_secret; // example: s3cr3tk3y (from your lighttpd config)
global $modsec_url; // example: http://media.asfd.com/dl/ with trailing slash
$filename = rawurldecode($filename);
$f = "/".$filename;
$t = time();
$t_hex = sprintf("%08x", $t);
$m = md5($modsec_secret.$f.$t_hex);
$link = $modsec_url.$m.'/'.$t_hex.$f;
return $link;
}
对于NginX配置文件,我有这个头:
server {
listen 80; # http2;
server_name localhost;
index index.php index.html index.htm;
#charset koi8-r;
access_log /var/log/nginx/access.log main;
root /var/www/domain.tld;
location / {
..... (the latest attempt)
location /videos/ {
secure_link $arg_st,$arg_e;
secure_link_md5 "secret$uri$arg_e";
root /var/www/domain.tld/media/videos; #physical real path
if ($secure_link = "") {
return 403;
}
if ($secure_link = 0) {
return 410;
}
}
有人可以试着告诉我如何实现这一目标,但也许更重要的是,为什么,在激情中让我了解如何以及为什么?