Ich muss den gesamten eingehenden HTTP-Verkehr auf meinem elastischen Load Balancer an HTTPS umleiten.
Ich bin müde mit Apache mod_rewrite:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/status https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Diese Regel sollte den vom Load Balancer hinzugefügten X-Forwarded-Proto-Header nutzen und den Browser des Benutzers anweisen, die HTTPS-Version derselben URL anzufordern.
Bisher funktioniert es nicht (es erfolgt keine Umleitung).
Was mache ich falsch?
Gibt es einen besseren Weg, dies zu tun?
BEARBEITEN:
Dies funktionierte schließlich:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
quelle
[L,R]
sollten in Ordnung sein, außer dass die nacktenR
einen http 302-Status zurückgeben. Die Reihenfolge der Flaggen sollte keine Rolle spielen. Wahrscheinlicher ist, dass es sich um eine Änderung handelt,RewriteRule
die sich in zweierlei Hinsicht unterscheidet: 1) Es werden keine http-Anforderungen/status
mehr umgeschrieben , und 2) es wird eine Erfassungsgruppe und eine Rückreferenz ((.*)
dann$1
) anstelle der%{REQUEST_URI}
Variablen verwendet. Für andere könnte es hilfreich sein zu sehen, ob die Flaggen wirklich die Ursache waren, oder vielleicht war es etwas anderes.Ich wollte nur meine Erfahrung hinzufügen, als ich stundenlang kämpfte, bevor mir klar wurde, dass meine Herzschlagdatei einen nicht entkoppelten Punkt enthielt (/alive.html). Duh.
Das zweite Problem war, dass die Hauptdomäne nicht umleitete, sondern Dateien. Also leitete http://domain.com/hello.html zu https://domain.com/hello.html um , http://domain.com jedoch nicht.
Folgendes habe ich in meine .htaccess-Datei eingefügt, die für mich funktioniert hat:
quelle
In meinem Fall stellte sich heraus, dass die Bedingung! Https den Gesundheitscheck durchbrach.
Durch Ändern der Bedingung in ^ http $ hat es funktioniert
fand das hier: https://forums.aws.amazon.com/thread.jspa?messageID=641930
quelle