Putnik, Если IP у доменов разные, то это может быть просто proxy_pass через nginx, так называемый простой клон без заморочек.
Вообще выведите на сайте /ip.php и зайти на этот адрес с алиаса/клона, если покажет ваш IP, значит проблема в хостинге, если нет то это клон, а тот IP который покажет можете смело заносить в черный список.
kxk, Зачем делать свой велосипед, когда есть готовый, например https://portainer.io/overview.html :)
JungleBox, Удаленные вирусы это хорошо, но обновлять движки и модули все равно нужно, а то рано или поздно снова появятся.
Что за напасть, вчера думал брать vps, а сегодня сайт не работает.
http://ping-admin.ru/free_test/result/15296643171y28m3bb53ien88e4047i.html
Нашел сайт hostiman.ru через ПС, понравились тарифные планы на vps.
Думаю пробью отзывы, смотрю и тема на серче есть, даже 53 страницы накатано, начал читать, пролистал пару страниц и не одного отзыва от постояльцев форума, только новореги, как-то не серьезно, пошел искать дальше 😒
Проверяйте uset-agent и ptr, кешируя валидные, так у вас всегда будет актуальный список IP адресов.
Вот это действительно нужная вещь, учтивая что контент есть на других сайтах.
Так можно и часть посетителей переманить.
karpo518, В плане кода все правильно, но лучше поставить на недельку логи и смотреть ошибки 403/410, потому что я хз какие там юсерагенты у видео бота и хз какой рефер передается при просмотре ролика с яндекс.видео :)
karpo518, мне кажется проблема не в nginx, а в php
Посмотрите что передается в переменную $url, "/fail.mp4" или "http://domain.ua/fail.mp4" ?
Закинул для теста на сервер, все работает.
http://profi.ngens.ru/secure_link.php
root@:~# php -vPHP 5.6.33-0+deb8u1 (cli) (built: Jan 5 2018 15:46:26)Copyright (c) 1997-2016 The PHP GroupZend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
root@:~# nginx -vnginx version: nginx/1.12.2
<?function buildSecureLink($url, $secret, $ttl = 10000){ $userIp = $_SERVER['REMOTE_ADDR']; $expires = time() + $ttl; $md5 = md5($expires.explode('?', $url)[0].$userIp.' '.$secret, true); $md5 = base64_encode($md5); $md5 = strtr($md5, '+/', '-_'); $md5 = str_replace('=', '', $md5); if(strpos($url, '?') !== false) { return $url . '&md5=' . $md5 . '&expires=' . $expires; } return $url . '?md5=' . $md5 . '&expires=' . $expires;}echo 'http://profi.ngens.ru' . buildSecureLink('/Chemistry.mp4?arg=1&arg=2', 'secret');?>
NGINX
location ~ \.mp4$ { secure_link $arg_md5,$arg_expires; secure_link_md5 "$secure_link_expires$uri$remote_addr secret"; return 200 "$secure_link_expires$uri$remote_addr secret";}
PHP
function buildSecureLink($url, $secret, $ttl = 10000){ $userIp = $_SERVER['REMOTE_ADDR']; $expires = time() + $ttl; return $expires.explode('?', $url)[0].$userIp.' '.'secret';}
1) secure_link_md5 вывести нельзя, вы можете вывести только переменные которые туда задаете, а потом привести в md5, как выводить переменные я уже писал выше.
2) Что-бы посмотреть ответ в браузере, просто используйте "view-source:http://domain.ua/file.mp4"
Да, хотя-бы потому что $secure_link_expires является обязательным полем в secure_link_md5.
Проблема в неправильном secure_link_md5, а точнее в неправильной комбинации secure_link и secure_link_md5.
В последнем посте я дал вам полностью рабочий конфиг nginx и php (из вашего примера).