Nginx: Posso configurar um limit_req_zone com uma chave com IP + URI?

1

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.

    
por El Barto 07.01.2016 / 15:49

1 resposta

4

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.

    
por 07.01.2016 / 17:59