Você pode definir a chave para o que quiser em limit_req_zone
.
limit_req_zone "$binary_remote_addr$request_uri" zone=req_dev:10m rate=2r/s;
Observe que isso exige pelo menos nginx 1.7.6.
Estou tentando configurar o módulo limit_req do Nginx para limitar a taxa de solicitações que qualquer IP pode fazer para o mesmo URL.
Gostaria de definir o limit_req_zone
com uma chave composta por uma combinação do IP do cliente e o URI do pedido. Ou seja, em vez disso:
limit_req_zone $binary_remote_addr zone=req_dev:10m rate=2r/s;
Algo parecido com isto:
set $ip_url "$binary_remote_addr$request_uri"
limit_req_zone $ip_url zone=req_dev:10m rate=2r/s;
Mas isso não funciona porque set
não pode ser chamado no contexto http
:
nginx: [emerg] "set" directive is not allowed here in /etc/nginx/nginx.conf:47
Existe alguma maneira de conseguir isso?
Só para deixar claro: não quero limitar a taxa em um URL específico. Quero evitar que um IP acerte o mesmo URL mais de duas vezes por segundo.
Você pode definir a chave para o que quiser em limit_req_zone
.
limit_req_zone "$binary_remote_addr$request_uri" zone=req_dev:10m rate=2r/s;
Observe que isso exige pelo menos nginx 1.7.6.
Tags nginx rate-limiting http