Я часами пытался понять и понять, как это работает, искал и много пробовал, но все же …. На голове не осталось волос 🙁
Источники проб и ошибок
http://nginx.org/en/docs/http/ngx_http_secure_link_module.html#variables
Безопасный псевдопоток FLV-файлов
Модуль защищенных ссылок Nginx не работает с php-файлами, но работает со статическими файлами
Пример nginx HttpSecureLinkModule php
Вопрос в том, как заставить 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;
}
}
Может, кто-нибудь попробует рассказать мне, как это сделать, но, может быть, более важно, почему, из-за страсти, которая может мне понять, как и почему?
Задача ещё не решена.
Других решений пока нет …