Re: Установка модуля | http secure link module & mp4

Anatoly Mikhailov anatoly at sonru.com
Thu Aug 14 10:33:00 UTC 2014


location /video должен быть internal, если не хотите дать доступ напрямую,
а видео будут браться из дерективы root (/home/project1/videos в вашем случае).

Также не понятен rewrite в локейшне /video. Как все это работает:
1) запрос пошел на /get/sdfasdfsdf/12312312/test.mp4
2) rewrite вытаскивает имя файла, а токен “sdfasdfsdf” и timestamp “12312312”
отправляет аргументами, чтобы проверить соответствие зашифрованному
имени файла (включая пароль secretword)
3) если токен и timestamp, проще скажем “соответствует", то location срабатывает
и файл отдается из директории root обратно http ответом, иначе 403/404

Вы упомянули про структуру директорий: /home/project1/videos/a1/b2/c3/a1b2c3.mp4,
в этом случае вам нужно перехватывать и передавать директорию, кроме непосредственно 
самого имени файла. В вашем примере все расчитано на то, что структура директории
плоская и файлы лежат кучей.

Анатолий

On 07 Aug 2014, at 20:16, dmitrydeco <nginx-forum at nginx.us> wrote:

> Здравствуйте форумчане. Недавно появилась задача установки модуля
> http_secure_link_module в связке с http_mp4_module. Последний я установил
> верно, всё работает отлично, как часы, но вот http_secure_link_module
> наотрез отказывается работать. 
> 
> Привожу nginx -V:
> 
> nginx version: nginx/1.2.1
> built by gcc 4.7.2 (Debian 4.7.2-5)
> TLS SNI support enabled
> configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf
> --error-log-path=/var/log/nginx/error.log
> --http-client-body-temp-path=/var/lib/nginx/body
> --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
> --http-log-path=/var/log/nginx/access.log
> --http-proxy-temp-path=/var/lib/nginx/proxy
> --http-scgi-temp-path=/var/lib/nginx/scgi
> --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --lock-path=/var/lock/nginx.lock
> --pid-path=/var/run/nginx.pid --with-pcre-jit --with-debug
> --with-http_addition_module --with-http_dav_module --with-http_geoip_module
> --with-http_gzip_static_module --with-http_image_filter_module
> --with-http_realip_module --with-http_stub_status_module
> --with-http_ssl_module --with-http_sub_module --with-http_xslt_module
> --with-ipv6 --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl
> --with-mail --with-mail_ssl_module --with-http_mp4_module
> --with-http_secure_link_module
> 
> Как видно, модуль есть в сборке.
> Покопавшись в интернете, настраиваю модуль http_secure_link_module:
> 
> 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/project1/videos;
>        }
> 
> Файлы у меня лежат в дирректории /home/project1/videos. Структура папок
> древовидная, то есть видео у меня хранится, например, в
> /home/project1/videos/a1/b2/c3/a1b2c3.mp4
> 
> generate.php - генерация ссылки:
> 
> $name = "a1/b2/c3/a1b2c3.mp4";
> $secret = 'secretword';
> $time = time() + 10800; //ссылка будет рабочей три часа
> $key = str_replace("=", "",
> strtr(base64_encode(md5($secret.'/home/project1/videos/'.$name.$time.getenv("REMOTE_ADDR"),
> TRUE)), "+/", "-_"));
> $encoded_url = "http://site.ru/get/$key/$time/$name";
> echo $encoded_url;
> 
> Я не могу понять, где написано в конфиге, откуда брать видео?
> При открытии ссылки сгенерированной, 403 ошибку показывает. Прошу помощи,
> профессионалы. Весь день изучал гугл, пытался сделать сам. Заранее
> благодарю.
> 
> Posted at Nginx Forum: http://forum.nginx.org/read.php?21,252399,252399#msg-252399
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru



Подробная информация о списке рассылки nginx-ru