502 Bad Gateway

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 Gateway

Cómo enviarlo

Node.js / Expressres.status(502).end()
Python / Flaskreturn '', 502
nginxreturn 502;

Cómo comprobarlo

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Abrir Códigos de estado HTTP