502 Bad Gateway
Uso
El código de estado 502 Bad Gateway significa que el servidor actúa como proxy o pasarela de un servidor upstream. Tras reenviar la solicitud HTTP, el servidor upstream devolvió una respuesta no válida. El tiempo necesario para resolver este problema es impredecible.
Cuando el servidor de origen devuelve un código de estado HTTP de error, lo esperable es que ese mismo código de estado y la información asociada se reenvíen al cliente para describir el problema con la mayor precisión posible.
Cuando el proxy no recibe absolutamente ninguna respuesta del servidor upstream, el código de estado 504 Gateway Timeout resulta más apropiado.
Nota
502 Bad Gateway significa que el proxy recibió una respuesta no válida del backend. El backend respondió, pero la respuesta estaba mal formada o era inesperada. 504 Gateway Timeout significa que el backend no respondió en absoluto dentro del tiempo de espera. El 502 apunta a una caída del backend o a un error de protocolo, mientras que el 504 apunta a un backend lento o inalcanzable. Ninguno de los dos códigos indica que el cliente haya hecho nada mal.
Impacto en SEO
Googlebot interpreta los errores 5xx como una señal para reducir temporalmente la frecuencia de rastreo en todo el sitio. Las URL indexadas previamente se conservan al principio, pero una caída prolongada hace que Google las elimine del índice. Se ignora cualquier contenido devuelto junto con una respuesta 502. En este aspecto, Google trata 500, 502 y 503 de forma idéntica. Un error 5xx en el archivo robots.txt es mucho más grave, incluso si todas las demás páginas del sitio devuelven 200. Google detiene el rastreo hasta 12 horas y luego recurre a una copia en caché durante un máximo de 30 días. Si el error persiste, Google desindexa el sitio por completo. Bingbot también considera las respuestas 5xx como fallos de rastreo. Los errores 5xx persistentes impiden la indexación en Bing.
Ejemplo
El cliente solicita un recurso y el servidor responde con el código de estado 502 Bad Gateway porque el servidor upstream devolvió una respuesta no válida.
Solicitud
GET /news HTTP/1.1
Host: example.com
Respuesta
HTTP/1.1 502 Bad Gateway
Content-Type: text/html; charset=UTF-8
Content-Length: 134
<html>
<head>
<title>Bad Gateway</title>
</head>
<body>
<p>The server is unreachable at this time.</p>
</body>
</html>
Cómo solucionarlo
Revise primero /var/log/nginx/error.log o el registro de errores equivalente del proxy. El mensaje del registro identifica el modo de fallo del upstream: conexión rechazada, conexión cerrada prematuramente o cabecera no válida.
Causas raíz habituales y sus soluciones:
En las configuraciones de proxy inverso con Apache, revise las directivas ProxyPass/ProxyPassReverse y confirme que mod_proxy y mod_proxy_http están habilitados. Ejecute apachectl configtest antes de reiniciar.
Tras aplicar las correcciones, ejecute nginx -t para validar la configuración y después recargue.
Referencias de código
.NET
HttpStatusCode.BadGateway
Rust
http::StatusCode::BAD_GATEWAY
Rails
:bad_gateway
Go
http.StatusBadGateway
Symfony
Response::HTTP_BAD_GATEWAY
Python3.5+
http.HTTPStatus.BAD_GATEWAY
Java
java.net.HttpURLConnection.HTTP_BAD_GATEWAY
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_BAD_GATEWAY
Angular
@angular/common/http/HttpStatusCode.BadGateway