O Nginx possui este módulo útil chamado ngx_http_limit_req_module
onde você pode limitar as solicitações ao servidor com base no IP ou no número de solicitações.
É possível limitar a taxa do local que inclui o cabeçalho personalizado? por exemplo, eu tentei isso, mas não consegue iniciar o nginx.
location /myservice {
if ($http_x_custom_header) {
limit_req zone=one burst=5;
}
}
O erro específico é:
nginx: [emerg] a diretiva "limit_req" não é permitida aqui em /etc/nginx/sites-enabled/default
ou seja, não gosta da diretiva limi_req dentro do if
bloco. Está tudo bem fora do bloco if.
No entanto, posso viver com um conjunto diferente de parâmetros de limite fora do local.
Você está correto,
limit_req
não pode ser usado nesse nível.A maneira de contornar isso é a seguinte.
Isso retornará
418
se o custom_header estiver presente, que nginx irá interceptar e enviar para o bloco de localização personalizado, que aplicará olimit_req