NGINX - solicitações do acelerador para evitar abuso

28

A razão pela qual eu quero fazer isso é porque os usuários se desenvolvem contra nossa API com JavaScript, e alguns desenvolvedores estragam e fazem com que os visitantes batam no servidor com solicitações AJAX. Quando isso acontece, desejo limitar as solicitações de API a talvez 50 solicitações por minuto ou algo nesse sentido.

Nota: (particularmente recursos intensivos de banco de dados, talvez em nível de caminho, em vez de em todo o servidor (por exemplo, acelerador "/ json_api /", mas não "/static/")./// p>     

por orokusaki 09.09.2010 / 21:05

1 resposta

35

Isso pode ser feito usando o LimitReqModule com o Nginx. No entanto, se isso for para um proxy reverso, convém testar a nova limitação de taxa suportada pelo HAProxy .

Eu achei a limitação de taxa nginx como um pouco confuso para obter a taxa exata desejada.

Mas basicamente você tem algo como:

limit_req_zone  $binary_remote_addr  zone=default:10m   rate=50r/m;

na seção http e, em seguida, algo como o seguinte na seção location da seção server :

limit_req zone=default burst=10 nodelay;

Para não tê-lo para uma determinada seção como /static , você faria apenas um location separado e não incluiria a diretiva limit_req (ou o inverso).

    
por 09.09.2010 / 21:12