¿Cómo se pueden solucionar los errores HTTP 502 cuando se realizan solicitudes a través de un equilibrador de carga clásico?

4 minutos de lectura
0

Aparecen errores HTTP 502 cuando el cliente realiza solicitudes a un sitio web a través de un equilibrador de carga clásico (CLB). ¿Cómo se puede solucionar este problema?

Descripción corta

Los errores HTTP 502 (bad gateway) (puerta de enlace no válida) pueden ocurrir por una de las siguientes razones:

  • El servidor web o los servidores de aplicaciones backend asociados que se ejecutan en instancias EC2 regresan un mensaje que el equilibrador de carga clásico no puede analizar.
  • El servidor web o los servidores de aplicaciones backend asociados regresan un mensaje de error 502 propio.

Para encontrar el origen de estos errores 502:

Si la respuesta del backend es la fuente del error 502 de ELB, el problema podría causarlo:

  • Una respuesta que contiene más de un CRLF entre cada encabezado.
  • Una respuesta que contiene un encabezado Content-Length que contiene un número no entero.
  • Una respuesta que tiene más bytes en el cuerpo que el valor del encabezado Content-Length.

Si el error 502 lo generan sus servidores backend, contacte con el propietario de su aplicación. Si el error 502 lo genera el equilibrador de carga clásico, la respuesta HTTP del backend tiene un formato incorrecto. Siga estos pasos para solucionar los errores 502 generados por ELB:

Resolución

1.    Verifique si el cuerpo de la respuesta devuelto por la aplicación back-end cumple con las especificaciones HTTP. Consulte la siguiente documentación que aparece en el editor de RFC:
RFC 7230 - HTTP/1.1: sintaxis y enrutamiento de mensajes
RFC 7231 - HTTP/1.1: semántica y contenido
RFC 7232 - HTTP/1.1: solicitudes condicionales
RFC 7233 - HTTP/1.1: solicitudes de rango
RFC 7234 - HTTP/1.1: caché
RFC 7235 - HTTP/1.1: autenticación

2.    Confirme que el encabezado de respuesta tenga la sintaxis correcta: una clave y el valor, como Content-Type:text. Asegúrese de que no falte Content-Length o la codificación de la transferencia en el encabezado de la respuesta HTTP. Para obtener más información sobre los campos de encabezado de HTTP del servidor web, consulte la documentación de la Autoridad de Números Asignados de Internet en Lista de campos de encabezado de HTTP. Examine las respuestas HTTP devueltas. Para ello, ejecute un comando similar al siguiente:

curl -vko /dev/null server_instance_IP

3.    Verifique el registro de acceso de ELB en busca de errores HTTP 502 duplicados. Los errores 502, tanto para elb_status_code como para backend_status_code, indican que hay un problema con una o más instancias del servidor web. Identifique qué instancias del servidor web están mostrando el problema y verifique los registros del servidor web de las instancias del servidor web backend. Consulte las siguientes ubicaciones de registro para algunos servidores web y sistemas operativos comunes:

Registros de Apache

  • Los registros del servidor web para CentOS, RHEL, Fedora y Amazon Linux se encuentran en el directorio /var/log/httpd/.
  • Los registros del servidor web para Debian y Ubuntu Linux se encuentran en el directorio /var/log/apache2 y /var/log/lighthttpd/.

Registros de NGINX

  • La ubicación de los registros de acceso de NGINX se define en el archivo nginx.conf: access_log /path/to/access.log
  • La ubicación predeterminada es /var/log/nginx/access.log

Registros de IIS

Los registros del servidor web para Windows IIS 7, IIS 7.5 e IIS 8.0 se almacenan en el directorio inetpub\logs\Logfiles. Para obtener más información sobre los registros de Internet Information Server (IIS), consulte la documentación de Microsoft en El código de estado HTTP en IIS 7.0 y versiones posteriores. Si confirmó que los errores 502 son generados por ELB y que la respuesta del back-end se ajusta a las convenciones RFC, póngase en contacto con AWS Support.


Información relacionada

Solución de problemas de un Classic Load Balancer: métricas de código de respuesta

Tutorial: Crear un Classic Load Balancer

Administración de identidades y acceso para Elastic Load Balancing

Configurar las comprobaciones de estado para el Classic Load Balancer

Administración del tiempo de espera de la conexión de Elastic Load Balancing

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años