Un proxy recibió una respuesta no válida del servidor que tiene detrás.
Cuándo usarlo
La aplicación detrás de nginx o de un balanceador de carga se bloqueó o devolvió basura.
Causas habituales y soluciones
Un proxy como nginx, un balanceador de carga o Cloudflare no pudo obtener una respuesta válida de la aplicación que tiene detrás. Causas habituales: la aplicación se bloqueó o no se está ejecutando, escucha en un puerto o una dirección distintos de los que espera el proxy (127.0.0.1 en lugar de 0.0.0.0 dentro de Docker), una ruta o un permiso incorrectos en el socket de PHP-FPM, o cabeceras de respuesta demasiado grandes. El log de errores de nginx dice “connection refused” o “upstream prematurely closed connection”.
Los 502 intermitentes detrás de AWS ALB suelen ser condiciones de carrera de keep-alive: la aplicación cierra las conexiones inactivas antes que el balanceador, así que define el timeout de keep-alive de la aplicación por encima del tiempo de inactividad de 60 segundos del ALB, por ejemplo server.keepAliveTimeout = 65000 en Node.js. La página de error de Cloudflare muestra si falló el navegador, Cloudflare o tu host. Revisa también si hay reinicios en bucle por fallos en systemd o Kubernetes, y procesos terminados por OOM en dmesg.
Error del servidor (5xx)
Los códigos 5xx son errores del servidor: puede que la solicitud sea correcta, pero el servidor o algo detrás de él ha fallado. Conviene configurar alertas para ellos.
Cómo se ve
HTTP/1.1 502 Bad GatewayCómo enviarlo
| Node.js / Express | res.status(502).end() |
|---|---|
| Python / Flask | return '', 502 |
| nginx | return 502; |
Cómo comprobarlo
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/