Unsere Website benötigt HIPAA-Konformität, daher muss alles verschlüsselt werden. Ich möchte nicht, dass der Client eine Fehlermeldung erhält, wenn er " http : //mysite.com" eingibt. Daher muss ich sowohl HTTP als auch HTTPS unterstützen und HTTP zu HTTPS umleiten. Habe ich recht?
Ich habe es auf den Webservern richtig gemacht. Wenn ich also eine direkte Verbindung zu den Webservern herstelle, wird HTTP automatisch zu HTTPS umgeleitet. Alles gut.
Die Webserver befinden sich jedoch hinter einem AWS Application Load Balancer. Ich weiß nicht, wie ich HTTP auf der ELB zu HTTPS umleiten soll. So können Client-Browser weiterhin über HTTP eine Verbindung zur ELB herstellen.
Wie richte ich HTTP => HTTPS auf einem AWS Application Load Balancer ein?
Mit anderen Worten, ich bin sicher, dass die Verbindung zwischen der ELB und den Webservern HTTPS ist, aber wie kann sichergestellt werden, dass die Verbindung zwischen den Client-Browsern und der ELB HTTPS ist?
quelle
X-Forwarded-Proto
Header, den die LB sendet.Antworten:
Sie können die unten aufgeführte Konfiguration zu Ihrer .htaccess-Datei hinzufügen. Stellen Sie jedoch vorher sicher, dass mod_rewrite auf dem Server aktiviert ist und die .htaccess-Datei nicht verweigert wird.
Für eine detaillierte Erklärung gehen Sie bitte die offizielle Dokumentation von aws end durch. https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
quelle
Ab Juli 2018 wird dies auf Application Load Balancern unterstützt.
HTTP:80
Listener hinzu / bearbeiten Sie ihnRedirect
https
443
Original host, path, query
301 - Permanently moved
Abbild der Einstellungen für einen HTTP-zu-HTTPS-Listener in AWS Application Load Balancer
quelle
Normalerweise wird die ELB so eingestellt, dass sie https (Port 443) empfängt und an die EC2-Instanz (Load Balancer-Ziel) auf http (Port 80) weiterleitet.
Der Backend-Webserver leitet diese Anforderungen an Port 443 des Load Balancers um, was zu einer Endlosumleitungsschleife führt (zwischen dem Load Balancer und dem Backend-Webserver).
Eine häufige Fehlermeldung ist
ERR_TOO_MANY_REDIRECTS
.Die Lösung besteht darin, sich den X-Forwarded-Proto anzusehen, bei dem es sich um das Protokoll handelt, das der Load Balancer bei der Entscheidung für die Umleitung sieht.
Für nginx sieht die Konfiguration folgendermaßen aus:
und für Apache .htaccess so etwas wie:
HINWEIS: Obwohl man denken könnte, dass es praktisch wäre, wenn dies ohne eine Neukonfiguration des Webservers durchgeführt werden könnte, gibt es ab Frühjahr 2018 keine Möglichkeit, dies nur mit ELB zu lösen, dh Sie müssen Ihren Webserver so konfigurieren, dass dies funktioniert.
quelle