Limitação de taxa Nginx por referenciador?

2

Configurei com sucesso a limitação de taxa em endereços IP assim,

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

Mas eu queria saber se é possível fazer o mesmo nos referenciadores? Por exemplo, se um site for colocado em um iframe em um site de terceiros, o que gerará muito tráfego para gerenciar.

Não consigo encontrar nenhuma variável nginx para o referenciador em nenhum lugar.

Eu não quero bloquear completamente o tráfego, apenas limitar o tráfego proveniente de um iframe.

Isso é possível? Ou a solução pode ser alcançada de uma maneira diferente?

Obrigado.

    
por SteveEdson 21.10.2013 / 11:40

2 respostas

2

@R1CH_TL no Twitter sugeriu usar algo assim:

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;

Esse método funcionaria? E seria melhor que a solução do silasistefan?

    
por 24.10.2013 / 10:55
1

Você tentou algo assim?

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;
}
    
por 23.10.2013 / 18:17