Nginx: Limite de solicitação com base no código de status da resposta

1

Estou tentando limitar as solicitações com o nginx com base no código de status da resposta. Eu gostaria de desacelerar as solicitações com muitas respostas 4xx ou 5xx. Eu tenho este bloco de código no meu arquivo de configuração:

map $status $bad_guy {
    ~^[23]  "";
    default $binary_remote_addr;
}
limit_req_zone "$bad_guy" zone=badguy:10m rate=1r/s;

server {
    limit_req zone=badguy burst=20;

Parece que a configuração acima bloqueia todos os endereços IP que enviam mais de 1 rps, incluindo aqueles com apenas 200 respostas OK.

Você poderia me ajudar por favor? Por que a configuração acima não funciona? Eu tenho que usar alguma outra coisa (talvez openresty?) Para conseguir isso? Obrigado.

    
por Viet Pham 16.04.2018 / 15:33

0 respostas