ГЛАВНАЯ ФОРУМ НОВОСТИ TOP 100 ВИДЕО АРХИВ ДРУЗЬЯ WEB МАСТЕРУ РАДИО СТОЛ ЗАКАЗОВ  
Популярное видео
Сериал Интерны (2 сезон) все серии 61-120
Сериал Интерны (2 сезон) все серии 61-120

Крёстный Отец 2 / The Godfather: II
Крёстный Отец 2 / The Godfather: II

Байкеры / Biker Boyz ( 2003 )
Байкеры / Biker Boyz ( 2003 )

Гладиатор (2000) Расширенная версия
Гладиатор (2000) Расширенная версия

Коментарии

Oposum пишет::22 выпуск





Oposum пишет::2 выпуск


Oposum пишет::4 серия добавлена



Oposum пишет::6 сезонов полностью

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » Курилка » Обо всем по немногу » Защита видое от Хотлинка с помощью NginX
Защита видое от Хотлинка с помощью NginX
OposumДата: Понедельник, 12.09.2011, 19:45 | Сообщение # 1
Лейтенант
Группа: Администраторы
Сообщений: 56
Награды: 1
Репутация: 1
Статус: Offline
Народ, пока толком не допер как настроить php обработчик для кодирования flv ссылок но как установить связку сервера с NginX как front-end к Apache могу расписать. Нжиникс в данном случае будет обрабатывать все запросы к серверу - то есть бут стоять фронтом и отдавать статические файлы сразу ну остально бут отсылаться Апачу.
Для установки нам подойдет любая рабочая сборка сервера Denwer (Денвер), TopServer, XAMPP или же VertrigoServ и актуальная версия NginX не обязательная самая последняя - лучше выбрать стабильную (на оф сайте такие пометки есть)

И так приступим:
1 по умолчанию Apache настроен на прослушивание 80го порта, что вполне логично и правильно, но в нашем случае 80й порт будет прослушиваться nginx'ом, поэтому и требуется перенести Apache на другой порт.

Открываем C:\AppServ\Apache2.2\conf\httpd.conf и ищем в нем строчку Listen 80 (либо свой номер порта, если у Вас веб-сервер был установлен на другом порту) и заменяем ее на Listen 127.0.0.1:81
Также просматриваем строчки задания виртуальных хостов (если они есть) и меняем их тоже
находим NameVirtualHost *:80 и меняем на NameVirtualHost *:81
находим все <VirtualHost *:80> и меняем на <VirtualHost *:81>

После этого сохраняем изменения и перезапускаем Apache. Теперь можно проверить, что веб-сервер отвечает на порту 81 (Для проверки был создан файл test.php содержащий <?php phpinfo(1); ?>).

запрос http://localhost:81/test.php если у вас открылась инфо о ПХП значит порт поменялся

Этап 2. Установка nginx

Для установки nginx достаточно распаковать nginx в папку где у нас будет находиться веб-сервер,
например в C:\AppServ\nginx.
Опытным путем было выяснено, что под Windows Nginx должен быть обязательно установлен на диск C, иначе он не запускается.

Для простоты управления веб-сервером nginx создадим несколько bat файлов:
start.bat
@ECHO OFF
start c:\nginx\nginx.exe
stop.bat
@ECHO OFF
start c:\nginx\nginx.exe -s stop
reload.bat
@ECHO OFF
start c:\nginx\nginx.exe -s reload

После этих действий можно запустить nginx и посмотреть как он работает (естественно, что пока мы не подключили php обрабатывать его файлы nginx не сможет)
Итак запускаем start.bat и идем в браузер смотреть, что получилось. Вводим в адресной строке http://localhost и получаем в ответ

Этап 3. Настройка nginx

Открываем файл конфига C:\nginx\conf\nginx.conf и заменяем его на

Code
#2 рабочих процесса
worker_processes  2;

# лог для ошибок
error_log  C:/nginx/logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

events {
      # максимум рабочих соединений
      worker_connections   2000;
}

http {
      include       mime.types;
      default_type  application/octet-stream;

      # Формат лога
      #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
      #                  '$status $body_bytes_sent "$http_referer" '
      #                  '"$http_user_agent" "$http_x_forwarded_for"';
      # Лог доступа всего веб-сервера
      #access_log  logs/access.log  main;

      # Таймаут при чтении заголовка запроса клиента
      client_header_timeout  3m;
      # Таймаут при чтении тела запроса клиента
      client_body_timeout    3m;
      # Таймаут при передаче ответа клиенту
      send_timeout           3m;
      # Таймаут keep-alive соединения   
      keepalive_timeout      2m;
        
      #gzip  on;
        
      server {
          # Слушать 80 порт
          listen       80;
          # Использовать следующие хосты.
          server_name  _;   

          # Лог доступа для конкретного виртуального хоста
          #access_log  logs/host.access.log  main;

          # Отдаем статику напрямую
          location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|js)$ {
              root         C:/AppServ/www;
              access_log   off;
              expires      30d;
          }
          # Запрещаем обращение к файлам .htaccess и .htpasswd
          location ~ /\.ht {
                  deny  all;
          }
          # Передаем запрос Apache
          location / {
                  # Адресс и порт Apache
                  proxy_pass http://127.0.0.1:81/;
                  proxy_redirect     off;

                  proxy_set_header   Host             $host;
                  proxy_set_header   X-Real-IP        $remote_addr;
                  proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

                  # Максимальный размер тела запроса клиента
                  client_max_body_size       10m;
                  client_body_buffer_size    128k;
                  #client_body_temp_path      tmp/client_body_temp;

                  proxy_connect_timeout      90;
                  proxy_send_timeout         90;
                  proxy_read_timeout         90;

                  proxy_buffer_size          4k;
                  proxy_buffers              4 32k;
                  proxy_busy_buffers_size    64k;
                  proxy_temp_file_write_size 64k;
                  #proxy_temp_path            tmp/proxy_temp;

                  charset  koi8-r;
          }

          #error_page  404              /404.html;

          # При перечисленных ошибках показывать статическую страницу /50x.html
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   html;
          }
      }
}
   


Этап 4. Установка и настройка RPAF в Apache

Так как у нас обращение к Apache идет не напрямую, а через Nginx, то теперь в REMOTE_ADDR у нас не пользовательский IP, а IP-адрес сервера, на котором расположен Nginx. Поэтому на помощь приходит RPAF, он берет тело заголовка X-Forwarded-For, присланного от фронтенда и формирует в Apache из него REMOTE_ADDR.
Таким образом заголовок REMOTE_ADDR снова имеет пользовательский IP.

Скачиваем mod_rpaf
mod_rpaf.rar (2.15 Кб)

и распаковываем в папку модулей Apache (C:\AppServ\Apache2.2\modules). После этого открываем C:\AppServ\Apache2.2\conf\httpd.conf и добавляем в конец файла

Код:
LoadModule rpaf_module modules/mod_rpaf.so

RPAFenable On
RPAFsethostname On
RPAFheader X-Forwarded-For
RPAFproxy_ips 192.168.1.26 127.0.0.1

вместо 192.168.1.26 укажите IP адрес сервера, на котором расположен Nginx.
Теперь сохраняем изменения и перезапускаем Apache.

Так же желательно перенести папку C:\AppServ\Apache2.2\icons в папку C:\AppServ\www. Без этого при просмотре содержимого каталогов (опция Indexes в Apache) nginx будет пытаться загрузить несуществующие иконки для файлов.

Вот собственно и все - мы получили рабочий NginX сервер

Теперь про защиту ссылок - В конфиг nginx в блок server для нашего домена добавляем:
Code
location / {
rewrite ^/video/(w+)/(.+)$ /get.php?hash=&filename= last;
...
}
location /video {
internal;
flv;
}


А вот с самим отработчиком get.php пока касяк где то
Code
$hash =$_GET['hash'];
$filename = $_GET['filename'];
$ip = md5(getenv(”REMOTE_ADDR”).”key”);
if ($hash == $ip){
$url=$_SERVER['REQUEST_URI'];
$url=explode(’?',$url);
$url=$url[1];
if (isset($url)){$filename .=’?’.$url;}
header(”Content-Type: video/x-flv”);
header(”X-Accel-Redirect:/video/”.$filename);
die();
}
echo “нех воровать=)”;
 
Форум » Курилка » Обо всем по немногу » Защита видое от Хотлинка с помощью NginX
Страница 1 из 11
Поиск:
Профиль
Воскресенье
19.11.2017
15:32


Логин:
Пароль:
Поиск
Случайное видео
9 жизней Томаса Катца (2000)

9 жизней Томаса Катца (2000)

Просмотров - 2258



Гаджини / Ghajini 2008

Гаджини / Ghajini 2008

Просмотров - 1976



Он был тихоней / He Was a Quiet Man (2007)

Он был тихоней / He Was a Quiet Man (2007)

Просмотров - 1887



Реальная любовь (2003)

Реальная любовь (2003)

Просмотров - 3148



Не вижу зла / See No Evil (2006)

Не вижу зла / See No Evil (2006)

Просмотров - 2768



Друзья сайта
Кинотеатр онлайн
Copyright KinofileZ.ru© 2017