Encabezados HTTP y balanceadores de tipo equilibrador de carga de aplicaciones - Elastic Load Balancing

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Encabezados HTTP y balanceadores de tipo equilibrador de carga de aplicaciones

Las solicitudes y respuestas HTTP utilizan campos de encabezado para enviar información sobre los mensajes HTTP. Los encabezados HTTP se añaden automáticamente. Los campos de encabezado son pares nombre-valor separados por signos de dos puntos, separados a su vez por un retorno de carro (CR) y un salto de línea (LF). Un conjunto estándar de campos de encabezado HTTP se define en RFC 2616, Encabezados de mensaje. También hay encabezados HTTP no estándar disponibles que se agregan automáticamente y que se suelen utilizar ampliamente en las aplicaciones. Algunos de los encabezados HTTP no estándar tienen un prefijo X-Forwarded. Los Equilibradores de carga de aplicación admiten los siguientes encabezados X-Forwarded.

Para obtener más información acerca de las conexiones HTTP, consulte Enrutamiento de solicitudes en la Guía del usuario de Elastic Load Balancing.

X-Forwarded-For

El encabezado de solicitud X-Forwarded-For ayuda a identificar la dirección IP de un cliente cuando se utiliza un equilibrador de carga HTTP o HTTPS. Dado que los equilibradores de carga interceptan el tráfico entre los clientes y los servidores, los registros de acceso al servidor contienen únicamente la dirección IP del equilibrador de carga. Para ver la dirección IP del cliente, utilice el atributo routing.http.xff_header_processing.mode. Este atributo permite modificar, conservar o eliminar el encabezado X-Forwarded-For en la solicitud HTTP antes de que el Equilibrador de carga de aplicación envíe la solicitud al destino. Los valores posibles para este atributo son append, preserve y remove. El valor predeterminado de este atributo es append.

Anexar

De manera predeterminada, el Equilibrador de carga de aplicación almacena la dirección IP del cliente en el encabezado de solicitud X-Forwarded-For y se lo pasa al encabezado de su servidor. Si el encabezado de solicitud X-Forwarded-For no se incluye en la solicitud original, el equilibrador de carga crea uno con la dirección IP del cliente como el valor de la solicitud. De lo contrario, el equilibrador de carga agrega la dirección IP del cliente al encabezado existente y se lo pasa al encabezado de su servidor. El encabezado de solicitud X-Forwarded-For puede contener varias direcciones IP separadas por comas. La dirección más a la izquierda es la IP del cliente en la que se realizó la solicitud por primera vez. Le sigue cualquier identificador de proxy posterior, en cadena.

El encabezado de solicitud X-Forwarded-For tiene el siguiente formato:

X-Forwarded-For: client-ip-address

A continuación se muestra un ejemplo de un encabezado de solicitud X-Forwarded-For cuya dirección IP de cliente es 203.0.113.7.

X-Forwarded-For: 203.0.113.7

A continuación se muestra un ejemplo de un encabezado de solicitud X-Forwarded-For cuya dirección IPv6 de cliente es 2001:DB8::21f:5bff:febf:ce22:8a2e.

X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e

Cuando el atributo de conservación del puerto del cliente (routing.http.xff_client_port.enabled) está habilitado en el equilibrador de carga, el encabezado de la solicitud X-Forwarded-For incluye el atributo client-port-number adjunto al atributo client-ip-address, separado por dos puntos. El encabezado luego tiene el siguiente formato:

IPv4 -- X-Forwarded-For: client-ip-address:client-port-number
IPv6 -- X-Forwarded-For: [client-ip-address]:client-port-number

En el caso de IPv6, tenga en cuenta que cuando el equilibrador de carga añade el client-ip-address al encabezado existente, coloca la dirección entre corchetes.

A continuación se muestra un ejemplo de un encabezado de solicitud X-Forwarded-For para un cliente con una dirección IPv4 de 12.34.56.78 y un número de puerto de 8080.

X-Forwarded-For: 12.34.56.78:8080

A continuación se muestra un ejemplo de un encabezado de solicitud X-Forwarded-For para un cliente con una dirección IPv6 de 2001:db8:85a3:8d3:1319:8a2e:370:7348 y un número de puerto de 8080.

X-Forwarded-For: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080

Conservar

El modo preserve del atributo garantiza que el encabezado X-Forwarded-For de la solicitud HTTP no se modifique de ninguna manera antes de enviarse a los destinos.

Remove

El modo remove del atributo elimina el encabezado X-Forwarded-For de la solicitud HTTP antes de enviarla a los destinos.

nota

Si habilita el atributo de conservación del puerto del cliente (routing.http.xff_client_port.enabled) y también selecciona preserve o remove para el atributo routing.http.xff_header_processing.mode, el Equilibrador de carga de aplicación anula el atributo de conservación del puerto del cliente. Mantiene el encabezado X-Forwarded-For sin cambios o lo elimina según el modo que seleccione antes de enviarlo a los destinos.

En la siguiente tabla se muestran ejemplos del encabezado X-Forwarded-For que recibe el destino al seleccionar el modo append, preserve o el modo remove. En este ejemplo, la dirección IP de la última transferencia es 127.0.0.1.

Descripción de la solicitud

Ejemplo de solicitud

XFF en modo append XFF en modo preserve XFF en modo remove
La solicitud se envía sin encabezado XFF GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 No presente No presente
La solicitud se envía con un encabezado XFF y una dirección IP de cliente. GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4 X-Forwarded-For: 127.0.0.4, 127.0.0.1 X-Forwarded-For: 127.0.0.4 No presente
La solicitud se envía con un encabezado XFF con varias direcciones IP de cliente. GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4, 127.0.0.8 X-Forwarded-For: 127.0.0.4, 127.0.0.8, 127.0.0.1 X-Forwarded-For: 127.0.0.4, 127.0.0.8 No presente
New EC2 experience
Para modificar, conservar o eliminar el encabezado X-Forwarded-For mediante la consola
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, seleccione Load Balancers.

  3. Seleccione el equilibrador de carga.

  4. En la pestaña Atributos, seleccione Editar.

  5. En la sección Configuración del tráfico, en Gestión de paquetes, para Encabezado X-Forwarded-For, elija Añadir (predeterminado), Conservar o Eliminar.

  6. Elija Guardar cambios.

Old EC2 experience
Para modificar, conservar o eliminar el encabezado X-Forwarded-For mediante la consola
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, seleccione Load Balancers.

  3. Seleccione el equilibrador de carga.

  4. En la pestaña Atributos, seleccione Editar.

  5. Para Encabezado X-Forwarded-For, elija Añadir (predeterminado), Conservar o Eliminar.

  6. Elija Guardar cambios.

Para modificar, conservar o eliminar el encabezado X-Forwarded-For mediante AWS CLI

Usa el modify-load-balancer-attributescomando con el atributo. routing.http.xff_header_processing.mode

X-Forwarded-Proto

El encabezado de solicitud X-Forwarded-Proto ayuda a identificar el protocolo (HTTP o HTTPS) que un cliente utiliza para conectarse al equilibrador de carga. Los registros de acceso al servidor contienen únicamente el protocolo que se utiliza entre el servidor y el equilibrador de carga; sin embargo, no contienen información sobre el protocolo utilizado entre el cliente y el equilibrador de carga. Para determinar el protocolo utilizado entre el cliente y el equilibrador de carga, utilice el encabezado de solicitud X-Forwarded-Proto. Elastic Load Balancing almacena el protocolo utilizado entre el cliente y el equilibrador de carga en el encabezado de solicitud X-Forwarded-Proto y se lo pasa al servidor.

La aplicación o el sitio web pueden utilizar el protocolo almacenado en el encabezado de solicitud X-Forwarded-Proto para generar una respuesta que redirija a la URL correspondiente.

El encabezado de solicitud X-Forwarded-Proto tiene el siguiente formato:

X-Forwarded-Proto: originatingProtocol

El siguiente ejemplo contiene un encabezado de solicitud X-Forwarded-Proto correspondiente a una solicitud originada en el cliente como solicitud HTTPS:

X-Forwarded-Proto: https

X-Forwarded-Port

El encabezado de solicitud X-Forwarded-Port ayuda a identificar el puerto de destino que el cliente utiliza para conectarse al equilibrador de carga.