Ребят, хелп, не могу сам разобраться как это сделать.
Есть 2 сервера, на одном крутится сайт с видео для скачивания, на втором хранится вся статика (видео, картинки, превьюхи).
Задача - отдавать видео через nginx_secure_link, и заблокировать прямой доступ к файлам mp4.
Т.е. видео должно отдаваться только по ссылке вида
https://tut-server-name.com/1/1.mp4?md5=U6nobMYI7u... (эту ссылку генерит файл php), и файл должен пойти на скачивание, а не проигрываться в браузере.
Структура папок на втором сервере следующая:
root в nginx /var/www/stream/
видео /var/www/stream/1/1.mp4
видео /var/www/stream/2/2.mp4
и тд
Нужно блокирнуть прямой доступ к файлам *.mp4, да бы нельзя было открыть напрямую
https://tut-server-name.com/1/1.mp4, и оставить прямой доступ к файлам с расширением *.jpg
Пример настройки secure_link:
location /securetest {
alias html/mhmsecure/securetest;
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr live21.ir";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}
Полная секция с https выглядит сейчас вот так:
# Settings for a TLS enabled server.
server {
server_name tut-server-name.com;
index index.php;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /var/www/stream;
ssl_certificate "/etc/nimble/cert.pem";
ssl_certificate_key "/etc/nimble/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
location /stream {
root /var/www;
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr enigma";
if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }
}
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
include fastcgi_params;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
Но сейчас конфиг неправильный и выдает ошибку. Помогите пожалуйста написать правильный. Заранее спасибо большое.
nginx: [emerg] location "/stream" is outside location "\.php$" in /etc/nginx/nginx.conf:70
nginx: configuration file /etc/nginx/nginx.conf test failed