Tenho um aplicativo Symfony que desejo limitar a taxa. Quero um limite geral e um limite para solicitações PHP. No entanto, apenas o limite geral parece se aplicar.
Aqui está a configuração (os valores de taxa são, é claro, apenas para fins de teste):
limit_req_zone $binary_remote_addr zone=limit_zone_general:10m rate=2r/m;
limit_req_zone $binary_remote_addr zone=limit_zone_php:10m rate=1r/m;
server {
# ...
root /var/www/html/public;
index index.php;
limit_req zone=limit_zone_general;
limit_req_status 429;
location / {
error_page 404 /meta/404;
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
limit_req zone=limit_zone_php;
limit_req_status 429;
}
}
Se eu agora chamar domain.local/, eu esperaria que ele fosse chamável apenas uma vez por minuto, já que não há documento estático para servir e, portanto, ele deveria chamar index.php e usar seu limite. No entanto, o limite geral se aplica e eu posso chamá-lo duas vezes por minuto.
Alguém pode me dar uma dica do que não estou entendendo direito?
Se uma pergunta semelhante já foi feita, terei prazer em dar uma olhada lá, mas até agora minha busca não trouxe nada útil.
Editar: O que eu tentei até agora:
- Tentei mover o limite geral do bloco do servidor para o bloco de localização para / (porque talvez a definição do servidor "supere" a definição de localização, mas não é o caso)
- Tentei usar teclas diferentes para as zonas, mas isso também não muda nada.
- Removendo o limite geral completamente. Agora o limite específico do php funcionou. Então o limite em si não é falho.