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 messageX-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.
En-têtes X-Forwarded
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-For
en-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-For
en-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-For
en-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-For
en-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
Ouvrez la EC2 console Amazon à l'adresse https://console.aws.amazon.com/ec2/
. -
Dans le volet de navigation, choisissez Load Balancers (Équilibreurs de charge).
-
Sélectionnez l'équilibreur de charge.
-
Dans l'onglet Attributes, choisissez Edit.
-
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.
-
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.mode
attribut.
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.