A diretiva Nginx limit_rate
permite especificar a velocidade que você gostaria de classificar respostas de limite, por exemplo
location / {
if ($slow) {
limit_rate 4k;
}
}
A documentação do Nginx está aqui . (a partir da documentação, você verá que seu back-end pode tomar a decisão e solicitar que o Nginx limite a taxa do cliente)
Como você obtém esse $slow
conjunto de variáveis depende da sua configuração. O mais fácil seria configurá-lo via geo
mapeamento:
geo $slow {
default 0;
1.2.3.0/24 1;
}
O mapeamento "geográfico" é uma dependência $slow
baseada no endereço IP do cliente. É 0 por padrão e 1 se o endereço IP do cliente estiver na 1.2.3.0/24
sub-rede. Veja a documentação do Nginx em "geo" aqui
Usar "fail2ban" é uma evolução razoável de toda essa solução. Você pode usar "fail2ban" para detectar automaticamente atividades incomuns e coletar IPs para o Nginx e, em seguida, recarregar o Nginx para que ele releia as listas de endereços IP que precisam ser mais lentos e / ou bloqueados.
A melhor maneira de lidar com esse remetente de spam é instalar e configurar corretamente o fail2ban. O Fail2ban pesquisará padrões nos arquivos de log e bloqueará todos os ips que enviam spam ao seu site. Claro que você deve configurá-lo para procurar o padrão adequado.
fonte