A diretiva limit_rate
do Nginx permite que você especifique a velocidade com a qual deseja classificar respostas-limite, por exemplo,
location / {
if ($slow) {
limit_rate 4k;
}
}
A documentação do Nginx é aqui . (da documentação você verá que seu backend pode tomar a decisão e solicitar que o Nginx limite o cliente)
Como você obtém esse conjunto de variáveis $slow
depende da sua configuração. O mais fácil seria configurá-lo via geo
mapping:
geo $slow {
default 0;
1.2.3.0/24 1;
}
O mapeamento "Geo" é uma dependência de $slow
com base no endereço IP do cliente. É 0 por padrão e 1 se o endereço IP do cliente estiver em 1.2.3.0/24
subnet. Consulte a documentação do Nginx em "geo" aqui
O uso do "fail2ban" é uma evolução razoável de toda essa solução. Você pode usar o "fail2ban" para detectar automaticamente atividades incomuns e coletar IPs para o Nginx e, em seguida, recarregar o Nginx para que ele releia listas de endereços IP que precisam ser retardados e / ou bloqueados.