Штатная дока по 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