Ограничение скорости Nginx по рефереру?
Я успешно настроил ограничение скорости для IP-адресов, например,
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
Но мне было интересно, можно ли сделать то же самое на реферерах? Например, если сайт размещается в iframe на стороннем сайте, который генерирует слишком много трафика для обработки.
Я не могу найти ни одной переменной nginx для реферера.
Я не хочу полностью блокировать трафик, просто ограничить трафик, который приходит от iframe.
Это возможно? Или решение может быть достигнуто по-другому?
Благодарю.
2 ответа
@R1CH_TL
в твиттере предложили использовать что-то вроде этого:
map $http_referer $limit_ip_key {
default $binary_remote_addr;
"http://domain-to-limit.co.uk/" 1;
}
limit_req_zone $limit_ip_key zone=two:10m rate=1r/s;
Будет ли этот метод работать? И будет ли это лучше, чем решение силасистефана?
Вы пробовали что-то подобное?
location / {
error_page 410 = @ads;
# if referrer is invalid then limit
valid_referers none blocked www.domain.com;
if ($invalid_referer) {
return 410;
}
# if ?isAD=1 then limit
if ($arg_isAD = "1"){
return 410;
}
root /var/www;
}
location @ads {
limit_req zone=one burst=5;
}