Защита картинок от прямого скачивания

Igor Sysoev is at rambler-co.ru
Thu Oct 22 12:24:59 MSD 2009


On Thu, Oct 22, 2009 at 11:51:04AM +0400, Евгений Осипов wrote:

> Igor Sysoev пишет:
> > On Wed, Oct 21, 2009 at 04:09:35PM +0400, Евгений Осипов wrote:
> >
> >   
> >> ОС: Windows Server
> >> NGINX Fronted
> >> Apache BackEnd
> >>
> >> Имеется следующий конфиг:
> >>
> >>     worker_processes  1;
> >>     error_log  D:/Server/Nginx/logs/error.log;
> >>
> >>     events {
> >>         accept_mutex  off;
> >>         }
> >>
> >>
> >>     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"';
> >>
> >>         sendfile        on;
> >>         keepalive_timeout 0;
> >>
> >>         gzip  on;
> >>         gzip_min_length 1100;
> >>         gzip_buffers 64 8k;
> >>         gzip_comp_level 3;
> >>         gzip_http_version 1.1;
> >>         gzip_proxied any;
> >>         gzip_types text/plain application/xml application/x-javascript
> >>     text/css;
> >>
> >>
> >>         server {
> >>             listen       80;
> >>             server_name  tvorite.ru www.tvorite.ru;
> >>             #access_log off;
> >>             #error_log off;
> >>             access_log  D:/Server/Nginx/logs/access_tvorite.log;
> >>             error_log  D:/Server/Nginx/logs/error_tvorite.log;
> >>
> >>         # Main location
> >>             location / {
> >>             root   D:/Server/Apache/htdocs;
> >>             index  index.php;
> >>             client_max_body_size  200M;
> >>             client_body_buffer_size    16k;
> >>             proxy_pass http://127.0.0.1:81;
> >>             proxy_set_header Host $host;
> >>             proxy_set_header X-Real-IP $remote_addr;
> >>             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> >>             }
> >>
> >>             # Static files location
> >>             location ~*
> >>     ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$
> >>     {
> >>             root   D:/Server/Apache/htdocs;
> >>             expires      30d;
> >>             }
> >>
> >>         }
> >>
> >> Когда добавляю следующую строчку в конфиг:
> >>
> >>     location ~ \.(jpg|gif|png)$ {
> >>         valid_referers none blocked server_names ~\.google\. images.yandex.ru;
> >> 	if ($invalid_referer) {
> >> 	    rewrite ^(.*)$ /img/invalid_referer.png redirect;
> >> 	}
> >>     }
> >>
> >> изображения вообще пропадают.
> >>
> >> Что я делаю не так?
> >>     
> >
> >    root   D:/Server/Apache/htdocs;
> > можно вынести на на уровень сервера или добавить в
> > "location ~ \.(jpg|gif|png)$".
> >
> > Из
> >      location ~* ^.+\.(jpg|jpeg|gif|png|...
> > нужно убрать "jpg|gif|png".
> >
> >
> >   
> Заметил что это помогло.
> Картинки на других сайтах перестали показываться, то нужно изображение 
> по появляется.
> Используется этот конфиг:
>         location ~ \.(bmp|jpg|jpeg|gif|png)$ {
>             root  html/htdocs;
>             access_log   off;
>             expires      30d;
>             valid_referers none blocked server_names forum.21region.org 
> foto.21region.org ~\.google\. images.yandex.ru doskapozora.ru;
>             if ($invalid_referer) {
>             rewrite ^(.*)$ /htdocs/hotlinkers.jpg redirect;
>             }
>         }
> 
> Изображение hotlinkers.jpg лежит в корне.

Если я правильно перевёл ", то нужно изображение по появляется" как ",
но нужное изображение hotlinkers.jpg не появляется", то нужно делать так:

         location ~ \.(bmp|jpg|jpeg|gif|png)$ {
              ...
              valid_referers ...
              if ($invalid_referer) {
                    rewrite ^   /hotlinkers.jpg  last;
              }
         }

         location = /hotlinkers.jpg {
              root  html/htdocs;
         }


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list