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.

importante

El encabezado X-Forwarded-For debe usarse con precaución debido a los posibles riesgos de seguridad. Las entradas solo pueden considerarse fiables si las agregan sistemas que estén debidamente protegidos dentro de la red.

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 servidor. El encabezado de solicitud X-Forwarded-For puede contener varias direcciones IP separadas por comas.

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 encabezado de X-Forwarded-For solicitud para un cliente con una IPv6 dirección de2001: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

Por IPv6 ejemplo, ten en cuenta que cuando el balanceador de cargas añade la dirección client-ip-address al encabezado existente, incluye la dirección entre corchetes.

A continuación se muestra un ejemplo de encabezado de X-Forwarded-For solicitud para un cliente con una IPv4 dirección 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 encabezado de X-Forwarded-For solicitud para un cliente con una IPv6 dirección 2001:db8:85a3:8d3:1319:8a2e:370:7348 y un número de puerto de8080.

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.

Quitar

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
Para modificar, conservar o eliminar el encabezado X-Forwarded-For mediante la consola
  1. Abre la EC2 consola de Amazon 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 de configuración del tráfico, en Gestión de paquetes, en el X-Forwarded-For encabezado, selecciona Añadir (predeterminado), Conservar o Eliminar.

  6. Seleccione Save changes (Guardar cambios).

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

Utilice el comando modify-load-balancer-attributes 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.