Page 1 of 2

Защита хотлинк

Posted: Mon May 15, 2017 7:53 am
by SALIK
Здравствуйте, как же правильно поставить защиту от хотлинка, такая конструкция не работает:

Code: Select all

location ~ \.(jpg|png|gif)$ {
valid_referers server_names blocked none frienddomain.com *.frienddomain.com ;
if ($invalid_referer) {
return 403;
}
}
И такая:

Code: Select all

location ~* ^.+\.(jpg|png|gif)$ {
root /path/to/site/;
valid_referers none blocked server_names ;
if ($invalid_referer) {
return 403;
}
}

Re: Защита хотлинк

Posted: Mon May 15, 2017 12:08 pm
by yariksat
У меня такое в nginx работает

Code: Select all

location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
            root           /путь до/сайта;
            valid_referers none blocked server_names ~(yandex|google|yahoo|bing|facebook|fbcdn);
            if ($invalid_referer) {
   rewrite (.*)\.(jpg|jpeg|png|gif)$ https://положил картинку на стронний сервис которая будет отображаться как запрет хотлинка;
              }

Re: Защита хотлинк

Posted: Mon May 15, 2017 2:21 pm
by SALIK
Спасибо большое, заработало, только как бы допилить, у меня сайт https и хотлинки которые идут по такой ссылке http://cайт.ru/картинка.png блокируются, но хотлинки https://сайт.ru/картинка.png не блокируются =(

Re: Защита хотлинк

Posted: Tue May 16, 2017 10:17 am
by yariksat
У меня в htaccess стоит редирект и всё попадает на HTTPS и блокируется просто отличто.
Это надо вставлять в home\admin\conf\web\ в nginx - этот файл отвечает за http и в snginx - этот файл отвечает за https

Re: Защита хотлинк

Posted: Thu May 18, 2017 4:48 pm
by SALIK
Вот спасибо, всё получилось =))

Re: Защита хотлинк

Posted: Thu May 18, 2017 6:04 pm
by SALIK
Хотя нет не получилось, хм вроде все так же вставил... =(

Re: Защита хотлинк

Posted: Tue May 23, 2017 6:50 am
by SALIK
У меня вот такая конструкция и не работает на https, на http все работает((

/home/user/conf/web/snginx.conf

Code: Select all

server {
    listen      xx.xx.xx.xx:443;
    server_name domen.ru www.domen.ru;
    ssl         on;
    ssl_certificate      /home/user/conf/web/ssl.domen.ru.pem;
    ssl_certificate_key  /home/user/conf/web/ssl.domen.ru.key;
    error_log  /var/log/httpd/domains/domen.ru.error.log error;

    location / {
        proxy_pass      https://xx.xx.xx.xx:8443;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
            root           /home/user/web/domen.ru/public_html;
            valid_referers none blocked server_names ~(yandex|ya|google|yahoo|bing|facebook|fbcdn|vk|vkontakte|mail);
            if ($invalid_referer) {
            rewrite (.*)\.(jpg|jpeg|png|gif)$ https://полный_путь_до_картинки_на_стороннем_сервисе;
              }
            access_log     /var/log/httpd/domains/domen.ru.log combined;
            access_log     /var/log/httpd/domains/domen.ru.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
        limit_req zone=antibot burst=30;
        limit_conn antibott 100;
    }

    location /error/ {
        alias   /home/user/web/domen.ru/document_errors/;
    }

    location @fallback {
        proxy_pass      https://xx.xx.xx.xx:8443;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include /home/user/conf/web/snginx.domen.ru.conf*;
}


Re: Защита хотлинк

Posted: Tue May 23, 2017 9:39 am
by yariksat
Вы как проверяете работает оно или нет?
Я размещаю на стороннем сайте картинку от себя,потом чищу кеш ибо картинка эта хранится у меня в кеше браузера и он её подтянет оттуда.И потом проверяю.

Re: Защита хотлинк

Posted: Tue May 23, 2017 11:44 am
by SALIK
yariksat wrote:Вы как проверяете работает оно или нет?
Я размещаю на стороннем сайте картинку от себя,потом чищу кеш ибо картинка эта хранится у меня в кеше браузера и он её подтянет оттуда.И потом проверяю.
Да вообщем то так же, только захожу еще в браузере режим инкогнито, и иду на сторонний сайт и выкладываю, выкладывал одну и туже картинку https://домен/000/u1/d4/42/b0fc5841.jpg и http://домен/000/u1/d4/42/b0fc5841.jpg
Прям загадка какая-то =(

Re: Защита хотлинк

Posted: Tue May 23, 2017 5:20 pm
by yariksat
Вот мой конфиг полностью

Code: Select all

server {
    listen      xxx.xxx.xxx.xxx:443;
    server_name domains.ru www.domains.ru;
    ssl         on;
    ssl_certificate      /home/admin/conf/web/ssl.domains.ru.pem;
    ssl_certificate_key  /home/admin/conf/web/ssl.domains.ru.key;
    resolver 8.8.8.8 8.8.4.4;
    resolver_timeout 10s;
    spdy_keepalive_timeout 300;
    spdy_headers_comp 9;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /home/admin/conf/web/dhparam.pem;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;

    error_log  /var/log/apache2/domains/domains.ru.error.log error;

    location / {
        proxy_pass      https://xxx.xxx.xxx.xxx:8443;
        }
    location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
            root           /home/admin/web/domains.ru/public_html;
            valid_referers none blocked server_names ~(yandex|google|yahoo|bing|facebook|fbcdn);
            if ($invalid_referer) {
   rewrite (.*)\.(jpg|jpeg|png|gif)$ https://domains.net/images/hotlink.png;
              }                                                      
            access_log     /var/log/apache2/domains/.domains.log combined;
            access_log     /var/log/apache2/domains/domains.ru.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
   

    location /error/ {
        alias   /home/admin/web/domains.ru/document_errors/;
    }

    location @fallback {
        proxy_pass      https://xxx.xxx.xxx.xxx:8443;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    disable_symlinks if_not_owner from=/home/admin/web/domains.ru/public_html; 
    include /home/admin/conf/web/snginx.domains.ru.conf*;
}

Как видите в секции location у нас есть с Вами различия,у меня защита хотлинк вынесена в отдельную секцию.