Código de estado HTTP 502 (Puerta de enlace incorrecta) - Amazon CloudFront

Código de estado HTTP 502 (Puerta de enlace incorrecta)

CloudFront devuelve un código de estado HTTP 502 (puerta de enlace incorrecta) cuando CloudFront no ha podido servir el objeto solicitado porque no se ha podido conectar con el servidor de origen.

Si utiliza Lambda@Edge, puede que el problema sea un error de validación de Lambda. Si recibe un error HTTP 502 con el código de error NonS3OriginDnsError, posiblemente hay un problema de configuración de DNS que impide que CloudFront se conecte al origen.

Error de negociación SSL/TLS entre CloudFront y un servidor de origen personalizado

Si utiliza un origen personalizado que requiere HTTPS entre CloudFront y el origen, los nombres de dominio no coincidentes podrían causar errores. El certificado SSL/TLS del origen debe incluir un nombre de dominio que coincida con el Dominio de origen que especificó para la distribución de CloudFront o con el encabezado Host de la solicitud de origen.

Si los nombres de dominio no coinciden, el protocolo SSL/TLS devuelve un error, y CloudFront devuelve un código de estado HTTP 502 (gateway incorrecta) y establece el encabezado X-Cache en Error from cloudfront.

Para determinar si los nombres de dominio del certificado coinciden con el Dominio de origen en la distribución o con el encabezado Host, utilice un comprobador de SSL en línea u OpenSSL. Si los nombres de dominio no coinciden, tiene dos opciones:

  • Obtener un nuevo certificado SSL/TLS que incluya los nombres de dominio aplicables.

    Si utiliza AWS Certificate Manager (ACM), consulte Solicitar un certificado público en la Guía del usuario de AWS Certificate Manager para solicitar un certificado nuevo.

  • Cambie la configuración de la distribución para que CloudFront deje de intentar utilizar SSL para conectarse al origen.

Comprobador de SSL en línea

Para encontrar una herramienta de comprobación de SSL, busque en Internet "comprobador ssl online". Por lo general, especifica el nombre de su dominio y la herramienta devuelve información acerca de su certificado SSL/TLS. Compruebe que el certificado contenga su nombre de dominio en los campos Nombre común o Nombres alternativos de sujeto.

OpenSSL

Como ayuda para solucionar los errores HTTP 502 desde CloudFront, puede utilizar OpenSSL para intentar realizar una conexión SSL/TLS con el servidor de origen. Si OpenSSL no puede establecer una conexión, puede indicar un problema con la configuración de SSL/TLS del servidor de origen. Si OpenSSL puede establecer una conexión, devuelve información sobre el certificado del servidor de origen, incluido el nombre común (campo Subject CN) y el nombre alternativo del sujeto (campo Subject Alternative Name) del certificado.

Utilice el siguiente comando de OpenSSL para probar la conexión con el servidor de origen (sustituya dominio de origen por el nombre de dominio del servidor de origen, como example.com):

openssl s_client -connect origin domain name:443

Si se cumplen las siguientes condiciones:

  • El servidor de origen admite varios nombres de dominio con varios certificados SSL/TLS

  • Su distribución está configurada para reenviar el encabezado Host al origen

Agregue la opción -servername al comando OpenSSL, como en el siguiente ejemplo (sustituya CNAME por el CNAME configurado en la distribución):

openssl s_client -connect origin domain name:443 -servername CNAME

El origen no responde con protocolos ni cifrados admitidos

CloudFront se conecta con servidores de origen a través de códigos cifrados y protocolos. Para obtener una lista de los algoritmos criptográficos y protocolos que CloudFront admite, consulte Protocolos y cifrados admitidos entre CloudFront y el origen. Si el origen no responde con uno de estos algoritmos criptográficos o protocolos en el intercambio SSL/TLS, CloudFront no puede conectarse. Use una herramienta en línea como SSL Labs para comprobar si el origen es compatible con los cifrados y protocolos. Escriba el nombre de dominio del origen en el campo Hostname (Nombre de host) y, a continuación, elija Submit (Enviar). Revise los campos Common names (Nombres comunes) y Alternative names (Nombres alternativos) de la prueba para ver si coinciden con el nombre de dominio del origen. Una vez finalizada la prueba, busque las secciones Protocols (Protocolos) y Cipher Suites (Conjuntos de cifrado) del resultado de las pruebas para saber qué protocolos o cifrados admite el origen. Compárelos con la lista que aparece en Protocolos y cifrados admitidos entre CloudFront y el origen.

El certificado SSL/TLS del origen ha caducado, no es válido, es autofirmado o el orden de la cadena de certificados es incorrecto

Si el servidor de origen devuelve lo siguiente, CloudFront interrumpe la conexión TCP, devuelve el código de estado HTTP 502 (gateway incorrecta) y establece el encabezado X-Cache en Error from cloudfront:

  • Un certificado caducado

  • Un certificado no válido

  • Un certificado autofirmado

  • Orden incorrecto en una cadena de certificados

nota

Si no está presente la cadena completa de certificados, incluidos los certificados intermedios, CloudFront interrumpe la conexión TCP.

Para obtener más información acerca de cómo instalar un certificado SSL/TLS en su servidor de origen personalizado, consulte Exigencia de HTTPS para la comunicación entre CloudFront y su origen personalizado.

El origen no responde en puertos especificados en la configuración de origen

Al crear un origen en la distribución de CloudFront, puede definir los puertos que CloudFront conecta con el origen para el tráfico HTTP y HTTPS. De forma predeterminada, estos son 80/443 TCP. Puede modificar estos puertos. Si el origen rechaza el tráfico en estos puertos por cualquier motivo, o si el servidor backend no está respondiendo en los puertos, CloudFront no se conectará.

Para solucionar estos problemas, revise los firewalls de su infraestructura y compruebe que no estén bloqueando los rangos de IP admitidos. Para obtener más información, consulte Rangos de dirección IP de AWS en la Guía del usuario de Amazon VPC. Compruebe también si su servidor web se ejecuta en el origen.

Error de validación de Lambda

Si utiliza Lambda@Edge, un código de estado HTTP 502 puede indicar que la respuesta de la función Lambda tenía un formato incorrecto o incluía contenido no válido. Para obtener más información sobre la resolución de errores de Lambda@Edge, consulte Prueba y depuración de funciones de Lambda@Edge.

Error de validación de la función de CloudFront

Si utiliza CloudFront Functions, un código de estado HTTP 502 puede indicar que la función de CloudFront intenta agregar, eliminar o cambiar un encabezado de solo lectura. Este error no aparece durante las pruebas, pero aparecerá después de implementar la función y ejecutar la solicitud. Para corregir este error, compruebe y actualice la función de CloudFront. Para obtener más información, consulte Actualización de funciones.

Error de DNS (NonS3OriginDnsError)

Un error HTTP 502 con el código de error NonS3OriginDnsError indica que hay un problema de configuración de DNS que impide que CloudFront se conecte al origen. Si recibe este error de CloudFront, asegúrese de que la configuración de DNS del origen es correcta y funciona.

Cuando CloudFront recibe una solicitud de un objeto que ha caducado o que no está en su caché, realiza una solicitud al origen para obtener el objeto. Para que la solicitud al origen se complete correctamente, CloudFront realiza una resolución de DNS en el dominio de origen. Si el servicio de DNS para el dominio tiene problemas, CloudFront no puede resolver el nombre de dominio para obtener la dirección IP, lo que se traduce en un error HTTP 502 (NonS3OriginDnsError). Para solucionar este problema, contacte con el proveedor de DNS o, si está utilizando Amazon Route 53, consulte ¿Por qué no puedo acceder a mi sitio web que utiliza los servicios DNS de Route 53?

Para solucionar este problema, asegúrese de que los servidores de nombres autoritativos del dominio raíz o ápex de zona (como example.com) del origen funcionan correctamente. Puede utilizar los siguientes comandos para encontrar los servidores de nombres del origen de ápex, con una herramienta como dig o nslookup:

dig OriginAPEXDomainName NS +short
nslookup -query=NS OriginAPEXDomainName

Una vez tenga los nombres de los servidores de nombres, utilice los siguientes comandos para consultar el nombre de dominio del origen ante ellos para asegurarse de que cada uno de ellos genera una respuesta:

dig OriginDomainName @NameServer
nslookup OriginDomainName NameServer
importante

Asegúrese de realizar esta solución de problemas de DNS con un equipo que esté conectado a la Internet pública. CloudFront resuelve el dominio de origen mediante un DNS público en Internet, por lo que es importante solucionar los problemas en un contexto similar.

Si el origen es un subdominio cuya autoridad de DNS está delegada en un servidor de nombres diferente al dominio raíz, asegúrese de que los registros del servidor de nombres (NS) y el inicio de la autoridad (SOA) estén configurados correctamente para el subdominio. Puede comprobar estos registros mediante comandos similares a los de los ejemplos anteriores.

Para obtener más información sobre DNS, consulte los conceptos del sistema de nombres de dominio (DNS) en la documentación de Amazon Route 53.

Error 502 originado por el equilibrador de carga de aplicación

Si utiliza equilibrador de carga de aplicación como origen y recibe un error 502, consulte ¿Cómo soluciono los errores HTTP 502 del equilibrador de carga de aplicación?.

Error 502 de origen de API Gateway

Si utiliza API Gateway y recibe un error 502, consulte ¿Cómo resuelvo los errores HTTP 502 de las API de REST de API Gateway con la integración de proxy de Lambda?.