HTTPen-têtes et équilibreurs de charge d'application - Elastic Load Balancing

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

HTTPen-têtes et équilibreurs de charge d'application

HTTPles demandes et HTTP les réponses utilisent des champs d'en-tête pour envoyer des informations sur les HTTP messages. HTTPles en-têtes sont ajoutés automatiquement. Les champs d'en-tête sont des paires nom-valeur dont les noms et les valeurs sont séparés par un signe deux points, et qui sont séparées entre elles par un retour chariot (CR) et un saut de ligne (LF). Un ensemble standard de champs d'HTTPen-tête est défini dans la section RFC 2616, En-têtes de message. Il existe également des HTTP en-têtes non standard qui sont automatiquement ajoutés et largement utilisés par les applications. Certains HTTP en-têtes non standard ont un X-Forwarded préfixe. Les Application Load Balancers prennent en charge les en-têtes X-Forwarded suivants.

Pour plus d'informations sur HTTP les connexions, consultez la section Request routing dans le guide de l'utilisateur d'Elastic Load Balancing.

X-Forwarded-For

L'en-tête de X-Forwarded-For demande vous aide à identifier l'adresse IP d'un client lorsque vous utilisez un HTTP équilibreur de HTTPS charge. Comme les équilibreurs de charge interceptent le trafic entre les clients et les serveurs, vos journaux d'accès au serveur ne contiennent que l'adresse IP de l'équilibreur de charge. Pour voir l'adresse IP du client, utilisez l'attribut routing.http.xff_header_processing.mode. Cet attribut vous permet de modifier, de conserver ou de supprimer l'X-Forwarded-Foren-tête de la HTTP demande avant que l'Application Load Balancer n'envoie la demande à la cible. Les valeurs possibles pour cet attribut sont append, preserve et remove. La valeur par défaut de cet attribut est append.

Important

L'X-Forwarded-Foren-tête doit être utilisé avec prudence en raison des risques de sécurité potentiels. Les entrées ne peuvent être considérées comme fiables que si elles sont ajoutées par des systèmes correctement sécurisés au sein du réseau.

Ajout

Par défaut, l'Application Load Balancer stocke l'adresse IP du client dans l'en-tête de demande X-Forwarded-For et transmet l'en-tête à votre serveur. Si l'en-tête de demande X-Forwarded-For n'est pas inclus dans la demande d'origine, l'équilibreur de charge en crée un avec l'adresse IP du client comme valeur de la demande. Dans le cas contraire, l'équilibreur de charge ajoute l'adresse IP du client à l'en-tête existant, puis transmet l'en-tête à votre serveur. L'en-tête de demande X-Forwarded-For peut contenir plusieurs adresses IP séparées par des virgules.

L'en-tête de demande X-Forwarded-For a le format suivant :

X-Forwarded-For: client-ip-address

Voici un exemple d'en-tête de demande X-Forwarded-For pour un client avec l'adresse IP 203.0.113.7.

X-Forwarded-For: 203.0.113.7

Voici un exemple d'en-tête de X-Forwarded-For demande pour un client dont l'IPv6adresse est2001:DB8::21f:5bff:febf:ce22:8a2e.

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

Lorsque l'attribut de préservation du port client (routing.http.xff_client_port.enabled) est activé sur l'équilibreur de charge, l'en-tête de la demande X-Forwarded-For inclut client-port-number ajouté à client-ip-address, séparés par deux points. L'en-tête prend alors la forme suivante :

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

Notez IPv6 en effet que lorsque l'équilibreur de charge ajoute le client-ip-address à l'en-tête existant, il place l'adresse entre crochets.

Voici un exemple d'en-tête de X-Forwarded-For demande pour un client dont l'IPv4adresse 12.34.56.78 et le numéro de port sont8080.

X-Forwarded-For: 12.34.56.78:8080

Voici un exemple d'en-tête de X-Forwarded-For demande pour un client dont l'IPv6adresse 2001:db8:85a3:8d3:1319:8a2e:370:7348 et le numéro de port sont8080.

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

Préserver

Le preserve mode de l'attribut garantit que l'X-Forwarded-Foren-tête de la HTTP demande n'est en aucun cas modifié avant son envoi aux cibles.

Remove (suppression)

Le remove mode de l'attribut supprime l'X-Forwarded-Foren-tête de la HTTP demande avant qu'elle ne soit envoyée aux cibles.

Note

Si vous activez l'attribut de préservation du port client (routing.http.xff_client_port.enabled) et que vous sélectionnez également preserve ou remove pour l'attribut routing.http.xff_header_processing.mode, Application Load Balancer remplace l'attribut de préservation du port client. Il conserve l'en-tête X-Forwarded-For inchangé ou le supprime selon le mode que vous sélectionnez, avant de l'envoyer aux cibles.

Le tableau suivant présente des exemples d'en-tête X-Forwarded-For que la cible reçoit lorsque vous sélectionnez le mode append, preserve ou remove. Dans cet exemple, l'adresse IP du dernier saut est 127.0.0.1.

Description de la demande

Exemple de demande

XFFen append mode XFFen preserve mode XFFen remove mode
La demande est envoyée sans XFF en-tête GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 Absent Absent
La demande est envoyée avec un XFF en-tête et une adresse IP du client. 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 Absent
La demande est envoyée avec un XFF en-tête contenant plusieurs adresses IP de clients. 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 Absent
Pour modifier, conserver ou supprimer l'en-tête X-Forwarded-For à l'aide de la console
  1. Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/.

  2. Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).

  3. Sélectionnez l'équilibreur de charge.

  4. Dans l'onglet Attributes, choisissez Edit.

  5. Dans la section Configuration du trafic, sous Gestion des paquets, pour En-tête X-Forwarded-For, choisissez Ajouter (par défaut), Préserver ou Supprimer.

  6. Sélectionnez Enregistrer les modifications.

Pour modifier, conserver ou supprimer l'X-Forwarded-Foren-tête à l'aide du AWS CLI

Utilisez la modify-load-balancer-attributescommande avec l'routing.http.xff_header_processing.modeattribut.

X-Forwarded-Proto

L'en-tête de X-Forwarded-Proto demande vous aide à identifier le protocole (HTTPouHTTPS) utilisé par un client pour se connecter à votre équilibreur de charge. Les journaux d'accès de votre serveur contiennent uniquement le protocole utilisé entre le serveur et l'équilibreur de charge ; ils ne comportent aucune information sur le protocole utilisé entre le client et l'équilibreur de charge. Pour déterminer le protocole utilisé entre le client et l'équilibreur de charge, utilisez l'en-tête de demande X-Forwarded-Proto. Elastic Load Balancing stocke le protocole utilisé entre le client et l'équilibreur de charge dans l'en-tête de demande X-Forwarded-Proto et transmet en même temps l'en-tête à votre serveur.

Votre application ou site Web peut utiliser le protocole stocké dans l'en-tête de la X-Forwarded-Proto demande pour afficher une réponse qui redirige vers le protocole appropriéURL.

L'en-tête de demande X-Forwarded-Proto a le format suivant :

X-Forwarded-Proto: originatingProtocol

L'exemple suivant contient un en-tête de X-Forwarded-Proto demande pour une demande provenant du client en tant que HTTPS demande :

X-Forwarded-Proto: https

X-Forwarded-Port

L'en-tête de demande X-Forwarded-Port vous permet d'identifier le port de destination utilisé par le client pour se connecter à l'équilibreur de charge.