Rate limiting limita quantas requisições um cliente pode fazer em uma janela de tempo. Você aplica em múltiplas camadas porque cada uma vê algo diferente, e você a configura pela chave que identifica o abusador.
Rate limiting limita quantas requisições um cliente pode fazer em uma janela de tempo. Você aplica em múltiplas camadas porque cada uma vê algo diferente, e você a configura pela chave que identifica o abusador.
429 Too Many Requests com Retry-After para que clientes recuem educadamente ao invés de bombardear.# Define a shared-memory zone keyed by client IP.
# rate=10r/s = the steady refill rate (token bucket).
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
server {
location /api/ {
# burst=20: allow a short spike of 20 queued requests
# nodelay: serve the burst immediately instead of spacing it out
limit_req zone=api burst=20 nodelay;
# Return 429 (not the default 503) so clients see a rate-limit signal
limit_req_status 429;
proxy_pass http://backend;
}
}
Aqui cada IP se recarrega em 10 requisições/segundo, pode fazer burst até 20, e qualquer coisa além disso recebe um 429.
Rate limiting é sua defesa mais barata e sempre ativa contra floods de Layer 7, credential stuffing e scrapers descontrolados. Camadear isso (edge para volume, proxy para a origem, app para lógica de negócio) e configurar a chave corretamente bloqueia abusadores enquanto usuários reais — e bursts legítimos — passam intocados. Configurar limites a partir de baselines reais é o que evita que vire uma outage provocada por você.