

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
<a name="x-forwarded-headers"></a>

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](https://datatracker.ietf.org/doc/html/rfc2616). 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](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#request-routing) en la *Guía del usuario de Elastic Load Balancing*.

**Topics**
+ [X-Forwarded-For](#x-forwarded-for)
+ [X-Forwarded-Proto](#x-forwarded-proto)
+ [X-Forwarded-Port](#x-forwarded-port)

## X-Forwarded-For
<a name="x-forwarded-for"></a>

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.

**Topics**
+ [Anexar](#x-forwarded-for-append)
+ [Conservar](#x-forwarded-for-preserve)
+ [Quitar](#x-forwarded-for-remove)

### Anexar
<a name="x-forwarded-for-append"></a>

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 de`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
```

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 de`8080`.

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

### Conservar
<a name="x-forwarded-for-preserve"></a>

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
<a name="x-forwarded-for-remove"></a>

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

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 | append | preserve | 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 | 

------
#### [ Console ]

**Para administrar el encabezado X-Forwarded-For**

1. Abra la consola de Amazon EC2 en [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

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

1. Seleccione el equilibrador de carga.

1. En la pestaña **Atributos**, seleccione **Editar**.

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

1. Seleccione **Save changes (Guardar cambios)**.

------
#### [ AWS CLI ]

**Para administrar el encabezado X-Forwarded-For**  
Utilice el comando [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html) con el atributo `routing.http.xff_header_processing.mode`. Los valores posibles son `append`, `preserve` y `remove`. El valor predeterminado es `append`.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=routing.http.xff_header_processing.mode,Value=preserve"
```

------
#### [ CloudFormation ]

**Para administrar el encabezado X-Forwarded-For**  
Actualice el [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)recurso para incluir el `routing.http.xff_header_processing.mode` atributo. Los valores posibles son `append`, `preserve` y `remove`. El valor predeterminado es `append`.

```
Resources:
  myLoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "routing.http.xff_header_processing.mode"
          Value: "preserve"
```

------

## X-Forwarded-Proto
<a name="x-forwarded-proto"></a>

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
<a name="x-forwarded-port"></a>

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