HTTP-Header und Application Load Balancer - Elastic Load Balancing

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

HTTP-Header und Application Load Balancer

Die HTTP-Anforderungen und -Antworten verwenden Header-Felder, um Informationen über HTTP-Nachrichten zu senden. HTTP-Header werden automatisch hinzugefügt. Header-Felder sind durch einen Doppelpunkt getrennte Name/Wert-Paare, die durch eine Zeilenumschaltung und einen Zeilenvorschub getrennt sind. Ein Standardsatz von HTTP-Header-Feldern ist in RFC 2616, Nachrichten-Header definiert. Es sind auch Nicht-Standard-HTTP-Header verfügbar, die automatisch hinzugefügt und weithin von den Anwendungen verwendet werden. Einige der Nicht-Standard-HTTP-Header besitzen ein X-Forwarded-Präfix. Application Load Balancer unterstützen die folgenden X-Forwarded-Header.

Weitere Informationen zu HTTP-Verbindungen finden Sie unter Weiterleitung von Anforderungen im Benutzerhandbuch zu Elastic Load Balancing.

X-Forwarded-For

Der X-Forwarded-For-Anforderungs-Header hilft Ihnen, die IP-Adresse eines Clients zu identifizieren, wenn Sie einen HTTP- oder HTTPS-Load Balancer verwenden. Da Load Balancer Datenverkehr zwischen Clients und Servern abfangen, enthalten Ihre Server-Zugriffsprotokolle nur die IP-Adresse des Load Balancers. Verwenden Sie das routing.http.xff_header_processing.mode-Attribut, um die IP-Adresse des Clients anzuzeigen. Dieses Attribut ermöglicht das Ändern, Beibehalten oder Entfernen der X-Forwarded-For-Header in der HTTP-Anforderung, bevor der Application Load Balancer die Anforderung an das Ziel sendet. Die möglichen Werte für dieses Attribut sind append, preserve und remove. Der Standardwert für dieses Attribut ist append.

Wichtig

Der X-Forwarded-For Header sollte aufgrund potenzieller Sicherheitsrisiken mit Vorsicht verwendet werden. Die Einträge können nur dann als vertrauenswürdig angesehen werden, wenn sie von Systemen hinzugefügt werden, die innerhalb des Netzwerks ordnungsgemäß gesichert sind.

Anfügen

Der Application Load Balancer speichert die IP-Adresse des Clients standardmäßig im X-Forwarded-For-Anforderungs-Header und übergibt den Header an Ihren Server. Wenn der X-Forwarded-For-Anforderungsheader nicht in der ursprünglichen Anforderung enthalten ist, erstellt der Load Balancer einen Header mit der Client-IP-Adresse als Anforderungswert. Andernfalls hängt der Load Balancer die Client-IP-Adresse an den vorhandenen Header an und leitet den Header dann an Ihren Server weiter. Der X-Forwarded-For-Anforderungsheader kann mehrere IP-Adressen enthalten, die durch Kommas getrennt sind.

Der X-Forwarded-For-Anforderungs-Header besitzt das folgende Format:

X-Forwarded-For: client-ip-address

Nachfolgend finden Sie ein Beispiel für einen X-Forwarded-For-Anforderungs-Header für einen Client mit der IP-Adresse 203.0.113.7.

X-Forwarded-For: 203.0.113.7

Nachfolgend finden Sie ein Beispiel für einen X-Forwarded-For-Anforderungs-Header für einen Client mit der IPv6-Adresse 2001:DB8::21f:5bff:febf:ce22:8a2e.

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

Wenn das Attribut zur Beibehaltung des Client-Ports (routing.http.xff_client_port.enabled) im Load Balancer aktiviert ist, enthält der X-Forwarded-For-Anforderungsheader die an die client-port-number angehängte client-ip-address, durch einen Doppelpunkt getrennt. Der Header nimmt dann das folgende Format an:

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

Beachten Sie, dass bei IPv6 der Load Balancer, wenn er die client-ip-address an den vorhandenen Header anfügt, die Adresse in eckige Klammern setzt.

Nachfolgend finden Sie ein Beispiel für einen X-Forwarded-For-Anforderungs-Header für einen Client mit der IPv4-Adresse von 12.34.56.78 und einer Portnummer von 8080.

X-Forwarded-For: 12.34.56.78:8080

Nachfolgend finden Sie ein Beispiel für einen X-Forwarded-For-Anforderungs-Header für einen Client mit der IPv6-Adresse von 2001:db8:85a3:8d3:1319:8a2e:370:7348 und einer Portnummer von 8080.

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

Beibehalten

Der preserve-Modus im Attribut stellt sicher, dass der X-Forwarded-For-Header in der HTTP-Anforderung in keiner Weise geändert wird, bevor er an Ziele gesendet wird.

Remove

Der remove-Modus im Attribut entfernt den X-Forwarded-For-Header in der HTTP-Anforderung, bevor er an Ziele gesendet wird.

Anmerkung

Wenn Sie das Attribut zur Beibehaltung des Client-Ports (routing.http.xff_client_port.enabled) aktivieren und auch preserve oder remove für das routing.http.xff_header_processing.mode Attribut auswählen, überschreibt der Application Load Balancer das Attribut zur Erhaltung des Client-Ports. Je nach ausgewähltem Modus bleibt der X-Forwarded-For-Header unverändert oder wird entfernt, bevor er an die Ziele gesendet wird.

Die folgende Tabelle zeigt Beispiele für den X-Forwarded-For-Header, den das Ziel erhält, wenn Sie entweder den Modus append, preserve oder den Modus remove auswählen. In diesem Beispiel lautet die IP-Adresse des letzten Hops 127.0.0.1.

Beschreibung der Anforderung

Beispielanforderung

XFF im append-Modus XFF im preserve-Modus XFF im remove-Modus
Anforderung wird ohne XFF-Header gesendet GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.1 Nicht vorhanden Nicht vorhanden
Anforderung wird mit einem XFF-Header und einer Client-IP-Adresse gesendet. 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 Nicht vorhanden
Anforderung wird mit einem XFF-Header mit mehreren Client-IP-Adressen gesendet. 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 Nicht vorhanden
So können Sie den X-Forwarded-For-Header mithilfe der Konsole ändern, beibehalten oder entfernen
  1. Öffnen Sie die Amazon EC2-Konsole unter https://console.aws.amazon.com/ec2/.

  2. Wählen Sie im Navigationsbereich Load Balancers aus.

  3. Wählen Sie den Load Balancer aus.

  4. Klicken Sie auf der Registerkarte Attribute auf Bearbeiten.

  5. Wählen Sie im Abschnitt Datenverkehrskonfiguration unter Paketverarbeitung für X-Forwarded-For-Header die Option Anfügen (Standard), Beibehalten oder Entfernen aus.

  6. Wählen Sie Änderungen speichern aus.

Um den X-Forwarded-For Header zu ändern, beizubehalten oder zu entfernen, verwenden Sie AWS CLI

Verwenden Sie den modify-load-balancer-attributesBefehl mit dem routing.http.xff_header_processing.mode Attribut.

X-Forwarded-Proto

Der X-Forwarded-Proto-Anforderungs-Header hilft Ihnen, das Protokoll (HTTP oder HTTPS) zu identifizieren, das ein Client für die Verbindung zu Ihrem Load Balancer verwendet hat. Ihre Server-Zugriffsprotokolle enthalten nur das Protokoll zwischen dem Server und dem Load Balancer. Sie enthalten keine Informationen über das Protokoll zwischen dem Client und dem Load Balancer. Verwenden Sie den X-Forwarded-Proto-Anforderungs-Header, um das Protokoll zwischen dem Client und dem Load Balancer zu überprüfen. Elastic Load Balancing speichert das Protokoll zwischen dem Client und dem Load Balancer im X-Forwarded-Proto-Anforderungs-Header und übergibt den Header an den Server.

Ihre Anwendung oder Website kann das im X-Forwarded-Proto-Anforderungs-Header gespeicherte Protokoll verwenden, um eine Rückmeldung auszugeben, die auf die entsprechende URL umleitet.

Der X-Forwarded-Proto-Anforderungs-Header besitzt das folgende Format:

X-Forwarded-Proto: originatingProtocol

Das folgende Beispiel enthält einen X-Forwarded-Proto-Anforderungs-Header für eine Anforderung, die vom Client als HTTPS-Anforderung ausgegeben wurde:

X-Forwarded-Proto: https

X-Forwarded-Port

Mit dem X-Forwarded-Port-Anforderungs-Header können Sie den Zielport identifizieren, den der Client für die Verbindung mit dem Load Balancer verwendet hat.