Eu estou olhando para limitar a taxa usando HttpLimitReqModule do nginx . No entanto, todas as solicitações são provenientes do mesmo IP (um balanceador de carga), com o endereço IP real nos cabeçalhos.
Existe uma maneira de ter o limite de taxa nginx com base no ip no X-Forwarded-For
cabeçalho em vez do ip da fonte?
nginx
rate-limiting
John Brodie
fonte
fonte
$binary_remote_addr
variável será definida corretamente.A
limit_req_zone
diretiva define a variável a ser usada como chave para o agrupamento de solicitações.Geralmente, o
$binary_remote_addr
é usado e não$remote_addr
porque é menor e economiza espaço.Talvez você queira usar o RealipModule como alternativa .
Isso reescreverá as variáveis de endereço remoto para o endereço fornecido em um cabeçalho personalizado e também facilitará o registro e o uso de outras variáveis.
fonte
$binary_remote_addr
e$remote_addr
normalmente é definido como o valor do cabeçalho configuradoX-Forwarded-For
- portanto, suas variáveis padrão agora são o "endereço IP do cliente real". Corranginx -V
para ver se o NGINX foi construído com--with-http_realip
. Então a configuração é tão simples quantoset_real_ip_from 10.0.0.0/8;
real_ip_header X-Forwarded-For;
:, onde a faixa CIDR é a do seu balanceador de carga upstream que está configurando oX-Forwarder-For
cabeçalho.