Ищете способ, чтобы остановить Hotlinking изображений на Nginx? Что такое Hotlinking изображений? Hotlinking изображений это довольно плохая практика, которая может использоваться для "кражи" пропускной способности Ваших серверов. Что это означает?
Это означает, что кто-то может создать ссылку на одно из Ваших изображений и отображать его на своих сайтах. В результате ваш сервер выступит в роли хостинга изображений для различных сайтов сети и Вы будете платить за чужой трафик.
Итак, что нам нужно для предотвращения Hotlinking-а на Nginx сервере? Ведь мы не хотим платить за чужой трафик? Для предотвращения включения с нашего сервера файлов-изображений или других ресурсов в веб-страницу чужого сайта используйте приведённую ниже комбинацию директив внутри Вашего файла конфигурации Nginx:
server { ... location ~ \.(jpg|jpeg|png|gif)$ { valid_referers none blocked *.mainsite.com *.google.com *.yandex.ru \ *.subscribe.ru *.feedburner.com *.bing.com *.webalta.ru *.yahoo.com \ *.mail.ru *.poisk.ru *.rambler.ru *.nigma.ru *.ask.com *.qip.ru \ *.ukr.net; if ($invalid_referer) { rewrite ^(.*)$ https://dl.dropboxusercontent.com/u/52572427/ \ images/wrs-hotlink-deny.jpg break; break; #return 403; } } ... }
В примере выше мы использовали ngx_http_rewrite_module для замены ссылки на реальное изображение ссылкой на изображение-заглушку с внешнего сервера. Если мы хотим просто отдать HTTP код 403, тогда закомментируйте "rewrite ^(.*)$ ... break;" и снимите комментарий с "#return 403;".
Вместо "*.mainsite.com" укажите имя своего домена и удалите или добавьте те домены, с которых будет разрешён Hotlinking.
Аналогичным образом можно прикрыть директорию:
server { ... location /pictures/ { valid_referers none blocked *.mainsite.com *.google.com *.yandex.ru \ *.subscribe.ru *.feedburner.com *.bing.com *.webalta.ru *.yahoo.com \ *.mail.ru *.poisk.ru *.rambler.ru *.nigma.ru *.ask.com *.qip.ru \ *.ukr.net; if ($invalid_referer) { return 403; } } ... }

