Штатная дока по nginx предлагает нам метод valid_referers (одной строкой), однако это неудобно – ведь хочется записывать ботовые рефереры в файл построчно. Да и вообще – лучше автоматизировать это дело, добавляя их скриптом.
# /etc/nginx/blacklist.conf map $http_referer $bad_referer { hostnames; default 0; "~bad-referer1.com" 1; "~bad-referer2.com" 1; } # /etc/nginx/nginx.conf http { include blacklist.conf; }
А затем в каждый блок server (вы ведь сделали общий файл-инклуд для них?) добавляем:
if ($bad_referer) { return 403; }
Проверяем:
curl -k --referer http://bad-referer1.com http://www.your-domain.com curl -k --referer http://www.bad-referer1.com http://www.your-domain.com