Нужна помощь с nginx И модулем для него Secure link module

bazziga

VIP
VIP
Регистрация
6 Май 2017
Сообщения
59
Реакции
12
Баллы
8
Привет пират. Нужна помощь с nginx И модулем для него Secure link module, а именно:

нужно сделать маленький стриминговый сервер mp4 с защитой от хотлинка. От хотлинка будет защищать модуль Secure link module. Суть такова- в ссылку на файл добавлялся хэш ИПа клиента + некий пароль, при обращении к nginx клиент редиректился на пхп-скрипт, который проверял ИП клиента и пароль, и в случае когда ИП и пароль совпадал, редиректил запрос обратно nginx’у, который выдавал файл. В случае, когда либо ИП не подходил (это когда юзер получил ссылку и пытается ее открыть на машине с другим ИПом ), либо пароль (а это когда уже кто-то прямо пытается подобрать пароль к расшифровке..), в этих случаях в конфиге nginx’а можно задать действие — либо нах слать (403, 404), либо подсовывать заглушку.
Например, прямая ссылка на файл: /home/user/video/file.mp4, если с доменом, то вот такая http://site.ru/video/file.mp4.
дабавляет в ссылку хеш из ip юзера и секретного слов и получается вот такая ссылка:
http://site.ru/msbud97sdubfnaoe98fubi/file.mp4

Уже кучу инструкций и конфигов из инета перепробовал-или не работает или кривой конфиг или генерирует нормально ссылку, но переходе по ней "файл не найден"((.

Или может уже есть готовые решения?
 

bazziga

VIP
VIP
Регистрация
6 Май 2017
Сообщения
59
Реакции
12
Баллы
8
Вообщем вот что. Вот пишу в конфиг nginx-а
Код:
location /get/ {
rewrite /getvideo/([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)\.mp4$ /video/$3.mp4?secl=$1&sect=$2;
}

location ~ /video/(.*)\.mp4$ {
secure_link $arg_secl,$arg_sect;
secure_link_md5 secretword$uri$arg_sect$remote_addr;
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 404; }
rewrite ^/video/(.*)$ /video/$1 break;
root /home/admin/web/user/public_html/video;
}
Папка с видео тут: /home/admin/web/user/public_html/video

Вот php скрипт для генерации ссылок:
Код:
<?php
$name = "v1.mp4";
$secret = 'secretword';
$time = time() + 10800; //ссылка будет рабочей три часа
$key = str_replace("=", "", strtr(base64_encode(md5($secret.'/home/admin/web/user/public_html/video/'.$name.$time.getenv("REMOTE_ADDR"), TRUE)), "+/", "-_"));
$encoded_url = "http://site.ru/get/$key/$time/$name";
echo $encoded_url;


?>
Получается примерно такая ссылка:
Код:
http://site.ru/get/7KuvIspHmf-70VR8dNsW0g/1548010029/video/1.mp4
Но по переходе по ней-
Код:
404
Page Not Found
Знающие, подскажите что тут может быть не так(((
 

ckau

Приватовец
Приватовец
Регистрация
27 Фев 2017
Сообщения
261
Реакции
106
Баллы
43
location /get/ {
rewrite /getvideo/

чёт я вот этот огород не понимаю, а вообще смотрите логи на сервере, куда по данной структуре приходит обращение и копать в обратную сторону
 

PunPun

Coder
Команда форума
Приватовец
Регистрация
23 Фев 2017
Сообщения
618
Реакции
402
Баллы
63
Сообщения которые не относятся к теме удалил, в следующий раз бан на 12 часов.
 
Последнее редактирование:
  • Like
Реакции: ckau
Сверху Снизу