Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie leite ich den HTTP-Datenverkehr auf meinem ELB Classic Load Balancer auf HTTPS um?
Ich verwende HTTP- und HTTPS-Listener auf meinem Elastic Load Balancing (ELB) Classic Load Balancer. Mein Classic Load Balancer lagert SSL aus und die Backend-Verbindung hört auf einem einzigen HTTP-Port (Port 80) zu. Wenn ich versuche, den Datenverkehr von HTTP auf HTTPS (Port 443) umzuleiten, erhalte ich den Fehler „ERR_TOO_MANY_REDIRECTS“.
Kurzbeschreibung
Classic Load Balancer unterstützt die Umleitung von HTTP-Datenverkehr auf HTTPS nicht als native Funktion. Damit dies funktioniert, musst du die Rewrite-Regeln auf den Webserver-Instances hinter dem Classic Load Balancer konfigurieren.
Konfiguriere die Rewrite-Regeln auf den Webanwendungsservern so, dass sie den X-Forwarded-Proto-Header verwenden und HTTP-Anfragen umleiten. Andernfalls können die Rewrite-Regeln zu einer Endlosschleife von Umleitungsanfragen zwischen dem Classic Load Balancer und den Instances hinter dem Load Balancer führen. Eine solche Schleife führt zum Fehler „ERR_TOO_MANY_REDIRECTS“.
Hinweis: Application Load Balancer unterstützen Umleitungsaktionen, mit denen HTTP-Datenverkehr auf HTTPS umgeleitet werden kann. Um diese Funktion zu verwenden, migriere den Classic Load Balancer zu einem Application Load Balancer.
Lösung
Sieh dir die folgenden Beispielkonfigurationen für Apache-, NGINX- und IIS-Webserver an. Konfiguriere die Webserver hinter dem Classic Load Balancer so, dass sie den X-Forwarded-Proto-Header verwenden, um den Datenverkehr zu leiten, je nachdem, ob Clients HTTP oder HTTPS verwenden. Stelle sicher, dass du den Webservern Rewrite-Regeln hinzufügst, die:
- HTTP verwenden, um Clients zu einer HTTPS-URL umzuleiten
- HTTPS verwenden, um Clients direkt zu bedienen
Hinweis: Ändere die folgenden Beispielkonfigurationen basierend auf der Konfiguration und dem Anwendungsfall.
Apache-Server: Methode für die virtuelle Hostdatei
Es hat sich bewährt, die folgende Methode zur Konfiguration der Webserver zu verwenden:
-
Öffne die Apache-Konfigurationsdatei. Mögliche Orte sind /etc/httpd/conf/httpd.conf (Apache 2/httpd), /etc/apache2/sites-enabled/ (Apache 2.4) oder /etc/apache2/apache2.conf (Apache auf Ubuntu).
-
Füge dem Abschnitt VirtualHost der Konfigurationsdatei eine Rewrite-Regel hinzu, die der folgenden ähnelt:
<VirtualHost *:80>RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] </VirtualHost> -
Speichere die Apache-Konfigurationsdatei.
-
Starte Apache neu.
Apache-Server: .htaccess file method
Wenn du keinen Zugriff auf die Apache-Hauptkonfigurationsdatei hast, verwende .htaccess-Dateien. Weitere Informationen findest du im Abschnitt Wann sollten .htaccess-Dateien (nicht) verwendet werden sollten auf der Seite Apache HTTP Server Tutorial: .htaccess-Dateien auf der Apache-Website.
Gehe wie folgt vor, um den Webserver zu konfigurieren:
-
Öffne die Apache-Konfigurationsdatei. Mögliche Orte sind /etc/httpd/conf/httpd.conf (Apache 2/httpd) oder /etc/apache2/sites-enabled/ (Apache 2.4).
-
Bearbeite die Directory-Direktive, um .htaccess zu aktivieren:
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> -
Speichere die Apache-Konfigurationsdatei.
-
Öffne die .htaccess-Datei.
-
Füge eine Rewrite-Regel hinzu, die der folgenden ähnelt:
RewriteEngine OnRewriteCond %{HTTP:X-Forwarded-Proto} =http RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent] -
Speichere die .htaccess-Datei.
-
Starte Apache neu.
NGINX-Server
Hinweis: Diese Lösung gilt für NGINX 1.10.3 (Ubuntu) und NGINX 1.12.1 (Amazon Linux).
Führe die folgenden Schritte aus:
-
Öffne die NGINX-Konfigurationsdatei (nginx.conf).
-
Füge die folgende Rewrite-Regel hinzu. Achte darauf, die Rewrite-Regel für die Konfiguration zu ändern:
server { listen 80; server_name _; if ($http_x_forwarded_proto = 'http'){ return 301 https://$host$request_uri; } } -
Starte NGINX neu.
IIS-Server
Hinweis: Diese Lösung gilt für Microsoft Windows Server 2012 R2 und 2016 Base.
Führe die folgenden Schritte aus:
-
Installiere das IIS-URL-Rewrite-Modul. Weitere Informationen findest du unter URL Rewrite auf der Microsoft-Website.
-
Öffne die Datei web.config.
-
Füge dem Abschnitt <system.webServer> die folgende Rewrite-Regel hinzu. Ändere die Rewrite-Regel für die spezifische Konfiguration:
<rewrite> <rules> <rule name="Rewrite HTTP to HTTPS" stopProcessing="true"> <match url="^(.*)$"/> <conditions logicalGrouping="MatchAny"> <add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$"/> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> </rule> </rules> </rewrite> -
Speichere die web.config-Datei.
-
Öffne den IIS-Manager.
-
Aktualisiere die Standardwebsite.
-
Vergewissere dich, dass die neue Rewrite-Regel im Abschnitt URL Rewrite angezeigt wird.
-
Starte deine Website neu.
-
Vergewissere dich, dass die Umleitung funktioniert.
Ähnliche Informationen
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor einem Jahr