El rate limiting limita cuántas solicitudes puede realizar un cliente en una ventana de tiempo. Se aplica en múltiples capas porque cada una ve algo diferente, y se codifica por lo que identifica al abusador.
El rate limiting limita cuántas solicitudes puede realizar un cliente en una ventana de tiempo. Se aplica en múltiples capas porque cada una ve algo diferente, y se codifica por lo que identifica al abusador.
429 Too Many Requests con Retry-After para que los clientes se retiren educadamente en lugar de insistir constantemente.# 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;
}
}
Aquí cada IP se recarga a 10 solicitudes/segundo, puede hacer ráfaga hasta 20, y cualquier cosa más allá obtiene 429.
El rate limiting es su defensa más barata y siempre activa contra inundaciones Layer 7, relleno de credenciales y raspadores descontrolados. Estratificarla (edge para volumen, proxy para el origen, app para lógica comercial) y codificarla correctamente detiene a los abusadores mientras que los usuarios reales — y las ráfagas legítimas — pasan intactos. Establecer límites a partir de baselines reales es lo que evita que se convierta en una indisponibilidad de su propia creación.