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
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
awk '$9 == 499' /var/log/nginx/access.log | wc -lEjemplo de respuesta
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.