Задать вопрос
@Universal32

Как правильно настроить конфиг nginx на secure_link?

Ребят, хелп, не могу сам разобраться как это сделать.

Есть 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
  • Вопрос задан
  • 295 просмотров
Подписаться 3 Средний 7 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы