Назад | Перейти на главную страницу

Ограничение скорости Nginx по рефереру?

Я успешно установил ограничение скорости для IP-адресов, например,

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

Но мне было интересно, можно ли сделать то же самое с реферерами? Например, если сайт помещается в iframe на стороннем сайте, что создает слишком много трафика для обработки.

Я нигде не могу найти никаких переменных nginx для реферера.

Я не хочу полностью блокировать трафик, просто ограничьте трафик, который исходит из iframe.

Это возможно? Или можно решить по-другому?

Спасибо.

@R1CH_TL в Twitter предложил использовать что-то вроде этого:

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;
}