Saltar al contenido

4xx · Errores del cliente

Error 499 Client Closed Request (nginx): qué significa y cómo solucionarlo

El código 499 Client Closed Request no es estándar: lo registra nginx cuando el cliente cierra la conexión antes de que el servidor responda. Nunca llega al navegador, solo aparece en los logs. Muchos 499 indican que el backend tarda tanto que los usuarios (o un proxy por delante) se cansan de esperar.

Qué significa el código 499

El usuario cierra la pestaña, pulsa "detener", o un balanceador o CDN por delante de nginx tiene un timeout más corto que el backend y corta. En ese caso nginx registra 499 y el visitante ve otro error, como un 504 o un 524 de Cloudflare.

Causas habituales del error 499

  • Backend lento: consultas pesadas o llamadas externas que tardan.
  • Timeout del proxy anterior (balanceador, Cloudflare) más corto que el de nginx.
  • Usuarios que recargan la página o cancelan la carga.

Cómo solucionar el error 499

  • Mide el tiempo de respuesta del backend ($upstream_response_time en el log de nginx).
  • Optimiza o pasa a segundo plano las operaciones lentas.
  • Alinea los timeouts de cada capa: el más externo debe ser el mayor.

Configuración y comandos

nginx: registrar los tiempos del backend

nginx
log_format tiempos '$remote_addr "$request" $status '
                   'rt=$request_time urt=$upstream_response_time';
access_log /var/log/nginx/access.log tiempos;

Contar los 499 del log

bash
awk '$9 == 499' /var/log/nginx/access.log | wc -l

Ejemplo de respuesta

http
203.0.113.7 - - [24/Oct/2026:10:00:00 +0000] "GET /informe HTTP/1.1" 499 0 "-" "Mozilla/5.0"

Herramientas para comprobarlo

Preguntas frecuentes

¿El 499 lo ve el usuario?

No. Como el cliente ya ha cerrado la conexión, nginx no envía nada; el 499 solo existe en el log.

Códigos relacionados

Ver todos los códigos de estado HTTP