Решили озадачиться и запретить со своих сайтов размещать материал на других ресурсах в виде ссылок. Для начала немного вводной информации.
Хотлинк (hotlink) — включение в веб-страницу файлов-изображений или других ресурсов с чужого сервера.
Кроме того что у нас мягко выражаясь воруют трафик, так как документы на которые даны ссылки, находятся на нашем сервере, соответственно нагружают наш канал. Но самое не мало важное, это может быть наша интеллектуальная собственность!
Как же с этим бороться? Проверять переменную HTTP_REFERER!
APACHE
Начнем с Apache, тут нам поможет модуль mod_rewrite, данный модуль нужно выбрать во время установки.
Для того чтобы проверить установлен модуль или нет, можете
посмотреть httpd.conf на наличие следующей строки:
1 |
LoadModule rewrite_module modules/mod_rewrite.so |
Далее нам необходимо написать условие и правило в .htaccess:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# Включаем mod_rewrite RewriteEngine on # Определяем условия при которых будет происходить преобразования # Если запросы пришли НЕ с нашего сайта RewriteCond %{HTTP_REFERER} !^http://blog.nahoste\.ru/ [NC] RewriteCond %{HTTP_REFERER} !^http://www\.blog\.nahoste\.ru/ [NC] # Если пришли НЕ со страницы ./hotlinking.png, это наш файл "заглушка" RewriteCond %{REQUEST_URI} !./hotlinking\.png$ [NC] # Теперь пишем правило, в котором определяем объекты которые нельзя скачивать с отличным от нашего # HTTP_REFERER и заменяем их ссылкой с "заглушкой" RewriteRule \.(jpe?g|gif|bmp|png)$ http://blog.\nahoste\.ru/hotlinking\.png [L] # NC - указывает что регистр записи не имеет значения # L - сравниваемая строка является путем, проверяется существование этого пути |
NGINX
Теперь перейдем к Nginx, а вот тут нам поможет ngx_http_referer_module. Его нужно выбрать во время установки, по умолчанию он выключен. Редактируем /etc/make.conf:
1 2 3 |
.if ${.CURDIR} == ${PORTSDIR}/www/nginx-devel WITH_NGX_HTTP_REFERER_MODULE=TRUE .endif |
Далее в секции server описываем правило:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Пишем условия. # Файлы в каталоге и подкаталогах /wp-content location /wp-content { # следующего расширения запрещены на скачку. location ~* ^.+\.(jpg|jpeg|gif|png|mp3|avi|mov|zip|rar|7zp) { root /home/nahoste.ru/www; # Правило запрещающие доступ к сайту если: # none - поле “Referer” в заголовке запроса отсутствует # blocked - поле “Referer” в заголовке запроса присутствует, но его значение удалено # межсетевым экраном (firewall) или прокси-сервером # server_names - в поле “Referer” заголовка запроса указано одно из имен сервера valid_referers none blocked server_names ~\.nahoste\.; # Если правило "valid_referers" при которых встроенная переменная $invalid_referer # будет иметь пустую строку в качестве значения, то файл будет разрешен на закачку. # В противном случае значение переменной равно “1”, и в браузере возвращается ошибка 403(Доступ запрещен). if ($invalid_referer) { return 403; } } } |
По мотивам:
http://htaccess.net.ru
http://nginx.org/ru
http://ru.wikipedia.org/wiki/
Добавить комментарий