up
ГлавнаяБлогБезопасностьЖелезоПрограммированиеАдминистрирование
SSDFreeBSDRAMBenchmarkMySQLHTMLHDDPerlBashPHPLinuxCPUDebianCentOS

Популярные статьи
Категория “Администрирование

Шифрование ссылок на видео с помощью модуля Nginx Http_Secure_Link_Module

Для работы необходимо чтобы Nginx был собран с модулем Http_Secure_Link_Module.

Нижеизложенная реализация позволяет для каждого IP адреса посетителя выдавать разные адреса ссылок. Кроме этого есть ограничение по времени действия ссылки.

Конфиг nginx:

location /mp4/ {
    rewrite /mp4/([a-zA-Z0-9_\-]+)/([0-9]+)/(.+)\.mp4$ /real_mp4/$3.mp4?md5=$1&time=$2;
}
location /flv/ {
    rewrite /flv/([a-zA-Z0-9_\-]+)/([0-9]+)/(.+)\.flv$ /real_flv/$3.flv?md5=$1&time=$2;
}

location /real_mp4/ {
    secure_link $arg_md5,$arg_time;
    secure_link_md5 secret$uri$arg_time$remote_addr;

    if ($secure_link = "") {
        return 403;
    }
    if ($secure_link = "0") {
        return 404;
    }

    access_log  off;
    internal;
    mp4;
    mp4_buffer_size     512K;
    mp4_max_buffer_size 10m;
}
location /real_flv/ {
    secure_link $arg_md5,$arg_time;
    secure_link_md5 secret$uri$arg_time$remote_addr;

    if ($secure_link = "") {
        return 403;
    }
    if ($secure_link = "0") {
        return 404;
    }

    access_log  off;
    internal;
    flv;
}

secret заменяем на свое секретное слово, которое используем и в PHP-коде.

Реализация на PHP:

<?php
$name = '2014/Kino.mp4';
$secret = 'secret';
$time = time() + 18000; //ссылка будет рабочей три часа
$link = base64_encode(md5($secret.'/real_mp4/'.$name.$time.$_SERVER['REMOTE_ADDR'], TRUE));
$key = str_replace("=", "", strtr($link, "+/", "-_"));
$encoded_url = "http://_IP_/mp4/$key/$time/$name";

echo $encoded_url."\n";
?>

_IP_ заменяет на IP  или домен.

В переменной $name прописано имя файла и внутренняя папка.

Thursday, 29 January 2015, 22:41Прочитано 36 раз
Ссылка на страницу:

comments powered by Disqus

Чаще всего ищут

Статистика блога
Статтей: 177
Безопасность: 9
Железо: 19
Программирование: 14
Администрирование: 134