Re: защита ссылок

Андрей Василишин a.vasilishin at kpi.ua
Tue Oct 9 20:34:02 UTC 2012


09.10.2012 21:27, Ar3s пишет:
> nginx
>
> server {
>          listen 80;
>          server_name site.ru;
>
>          access_log  /dev/null;
>
>          location / {
>                  root   /var/www/work;
>                  index  index.html index.htm index.php;
> #                rewrite ^/video/(w+)/(.+)$
> /get.php?hash=$1&filename=$2last;
>                  rewrite ^/video/(\w+)/(.+)$ /get.php?hash=$1&filename=$2
> last;
>                  }
>
> #       location /video {
>          location ~ ^/video/.*\.flv$ {
>                  root /var/www/work;
>                  internal;
>                  flv;
>                  }
>          location ~ \.php$ {
>                  fastcgi_pass  unix:/tmp/.fastcgi.www-data/socket;
>                  fastcgi_index  index.php;
>                  fastcgi_param  SCRIPT_FILENAME
> /var/www/work/$fastcgi_script_name;
>                  fastcgi_param QUERY_STRING $query_string;
>                  fastcgi_param REQUEST_METHOD $request_method;
>                  fastcgi_param CONTENT_TYPE $content_type;
>                  fastcgi_param CONTENT_LENGTH $content_length;
>                  include fastcgi_params;
>                  proxy_send_timeout 360;
>                  proxy_read_timeout 360;
>          }
>
> -------------------------------------------------------------------------------------------------------
> get.php
> <?php
> $hash =$_GET['hash'];
> $filename = $_GET['filename'];
> $ip = md5($_SERVER['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 'NO';
> ?>
> --------------------------------------------------------------------------------------------
> нарыл уже в сети кучу примеров. Но не работает хоть тресни. Подозреваю что
> дело либо в php скрипте либо в моих настройках либо в моих руках...
>

>

Повторюсь еще раз, включите дебаг лог для своего айпи, с виду все нормально.
  Первое что может быть, не правильно считается хеш потому что 
$_SERVER['REMOTE_ADDR'] будет всегда 127.0.0.1, надо либо передавать на 
бекенд каким-нибудь заголовком типа X-Real-IP REMOTE_ADDR и соответвенно 
скрипт подправить, либо ставить апачи mod_rpaf. Для чисто раздающего 
сервера разницы в потребляемых ресурсах между php-cgi и апачи на этом 
скрипте не будет никакой.
Второе, проблема с путем,в дебаг логе это будет отчетливо видно, но по 
конфигам вроде этой проблемы не должно быть.


-- 
WBR, Andrey Vasilishin CDIG1-UANIC, CDIG1-RIPE



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