karpo518, Так и нужно, если верить документации http://nginx.org/ru/docs/http/ngx_http_secure_link_module.html
В моем примере файл отдается по другому url, "/video/md5/expires/piknik.mp4" вместо "/video/piknik.mp4" - (у заказчика была цель именно таких ссылок).
В вашем случаи правильные настройки выглядят так
location ~ \.mp4$ { mp4; mp4_buffer_size 1m; mp4_max_buffer_size 5m; secure_link $arg_md5,$arg_expires; secure_link_md5 "$secure_link_expires$uri$remote_addr secret"; if ($secure_link = "") { return 403; } if ($secure_link = "0") { return 410; }}
PHP
function buildSecureLink($url, $secret, $ttl = 10000){ $userIp = $_SERVER['REMOTE_ADDR']; $parts = parse_url($url); $path = $parts['path']; $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;}
Ссылки соответственно идут так "/Natalia.mp4?args=s1&md5=YvLrbogLjUmjx1KOBIBGEQ&expires=1528733288"
P.S: Не забудьте указать рандомый текст вместо "secret".
karpo518, Я клиенту делал когда-то подобное, но так как это было давно и с php я уже не дружу, то просто приведу рабочий пример с архива.
// Шаблон для токена$secret_word = "Tfv9WLsWbf"; // Секретное слово $uri_prefix = "http://domain.ua/video/"; // Начало ссылки$file = '/piknik.mp4'; // Файл$time = time()+10800; // Ссылка будет действительна в течении 3х часов// Генерируем token$secret = md5($time.$file.$_SERVER["REMOTE_ADDR"].' '.$secret_word, true); // Хешируем в md5 bin.$secret = base64_encode($secret); // Encode base64 url$secret = strtr($secret, '+/', '-_'); // Редактирует ссылку $secret = str_replace( '=', '', $secret); // Редактирует ссылку // Формируем ссылку$hash_url = '"'.$uri_prefix.$secret.'/'.$time.$file;
NGINX
location ~ ^/video/.+\.(flv|mp4)$ { valid_referers none blocked .domain.ua; if ($invalid_referer) { return 403; } if ($uri ~* ^/video/([^/]+)/([0-9]+)/(.+\.(flv|mp4))$) { set $md5 $1; set $expires $2; set $myuri $3; } secure_link $md5,$expires; secure_link_md5 "$secure_link_expires/$myuri$remote_addr Tfv9WLsWbf"; if ($secure_link = "") { return 403; } if ($secure_link = "0") { return 410; } rewrite "^/video/([^/]+)/([0-9]+)/(.+)$" /video/$3 last;}
P.S: Хеш nginx можно вывести через "return 200 $secure_link;"
На платном тарифе другие сетки, они тоже есть в блоке, но уже реже.
VPSprima, Есть еще VPS с картами, например https://vps.house/ как-то на хабре проскакивал.
OwnCloud должен подойти
spbkk, Попробуйте найти для начала через https://revisium.com/ai/ или ClamAV
Пендальф, В принципе даже так мало шансов попасть на сайт (взлом через хостинг, брут и т.д не в счет).
А по существу так и не ответили..
Зачем генерировать копию сайта это дело ТС. В данном случаи ТС описал среду в которой будет эксплуатироваться WP и основываясь на этой среде я сделал вывод что конкретно в этом случаи крон не нужен, просто потому что ТС не собирается обновлять WP или плагины, на сайте не будет посетителей и крону просто нечего делать, нету ни кеша для чистки, нет задач для обновления количества просмотров и т.д.
Поэтому мне интересно почему вы считаете что в этой ситуации, ТС нужен крон ?
Если читать весь текст а не только между строк, то дословно там написано так "необходимость крона зависит от ситуации".
Вы лучше скажите мне зачем сайту который закрыт от всех, а весь функционал сводится к "зайти в админку и нажать кнопку для генерации html копии" нужен крон ?