Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Защита картинок от прямого скачивания
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
|