Ich möchte die gesamte HTTP-Anfrage an die https-Anfrage auf ELB umleiten . Ich habe zwei EC2-Instanzen. Ich benutze Nginx für den Server. Ich habe versucht, die nginx conf-Dateien ohne Erfolg neu zu schreiben. Ich würde gerne einen Rat dazu bekommen.
redirect
nginx
amazon-ec2
https
amazon-elb
Amit Badheka
quelle
quelle
Antworten:
AWS Application Load Balancer unterstützen jetzt die native HTTP-zu-HTTPS-Umleitung.
Gehen Sie wie folgt vor, um dies in der Konsole zu aktivieren:
Dasselbe kann durch Verwendung der hier beschriebenen CLI erreicht werden .
Dies ist auch in Cloudformation möglich, wo Sie ein Listener-Objekt wie folgt einrichten müssen:
Wenn Sie weiterhin klassische Load Balancer verwenden, wählen Sie eine der von den anderen beschriebenen NGINX-Konfigurationen.
quelle
instances
Registerkarte gibt)ELB setzt
X-Forwarded-Proto
Header. Sie können ihn verwenden, um festzustellen, ob die ursprüngliche Anforderung HTTP war, und dann zu HTTPS umleiten.Sie können dies in Ihrem versuchen
server
conf :Schauen Sie sich die ELB-Dokumente an .
quelle
nginx
Konfiguration, aber das Prinzip gilt für jeden Webserver.Ich hatte das gleiche Problem. In meiner Situation wurde HTTPS vollständig von ELB verwaltet und ich kannte meine Quelldomäne nicht im Voraus, sodass ich am Ende Folgendes tat:
Und dann natürlich das ELB 'https' auf den Instanzport 80 und dann die 'http'-Route auf den Instanzport 81 zeigen.
quelle
Der Amazon Elastic Load Balancer (ELB) unterstützt einen HTTP-Header namens X-FORWARDED-PROTO. Alle HTTPS-Anforderungen, die die ELB durchlaufen, haben den Wert X-FORWARDED-PROTO gleich "HTTPS". Für die HTTP-Anforderungen können Sie HTTPS erzwingen, indem Sie die folgende einfache Umschreiberegel hinzufügen. Bei mir funktioniert es gut!
Apache
Sie können Ihrer .htaccess-Datei folgende Zeilen hinzufügen:
Wenn Sie vhost.conf zum Verwalten mehrerer Domänen auf demselben EC2-Webserver verwenden, können Sie der vhost.conf Folgendes hinzufügen (fügen Sie es der Domäne hinzu, für die Sie https verwenden möchten):
IIS
Installieren Sie das IIS Url-Rewrite-Modul und fügen Sie über die Konfigurations-GUI die folgenden Einstellungen hinzu:
Lesen Sie hier mehr
quelle
RewriteCond %{HTTP:X-Forwarded-Proto} !(https|^$)
Es ist möglicherweise nicht die Lösung, nach der Sie suchen, aber eine andere Option könnte darin bestehen, AWS CloudFront zusätzlich zu ELB zu verwenden. CloudFront bietet die Option, den gesamten eingehenden HTTP-Verkehr an HTTPS umzuleiten.
quelle
Die oben genannten htaccess-Lösungen haben dazu geführt, dass die ELB-Integritätsprüfung fehlgeschlagen ist. Ich hatte einige Probleme, die Lösung zu finden, bis ich online einen Artikel entdeckte, in dem jemand die gleichen Probleme hatte wie ich. Seine Lösung bestand darin, dies stattdessen am Anfang der htaccess-Datei hinzuzufügen:
Quelle: Umleiten von HTTP zu HTTPS mit AWS und ELB
quelle
Ich hatte ein seltsames Problem mit der Nginx- und ELB-Konfiguration. Mein Setup umfasste 3 verschiedene Dienste in einem Nginx hinter ELB. Und ich hatte ein Problem mit gemischten Inhalten: Wenn Ihre Anfrage an ELB https ist, aber nur innerhalb von ELB http, und der Server mithilfe von http einen relativen Pfad zu statisch erstellt, schlägt der Browser mit dem Problem mit gemischten Inhalten fehl. Und ich muss eine Lösung für beide http / https-Arbeiten ohne Weiterleitungen erstellen.
Hier befindet sich die Konfiguration in
nginx/conf.d/
Ordner:Dies bedeutet, dass wir wissen, was ein echtes Client-Protokoll ist. Wie Sie sehen können, werden wir es haben
$switch
var haben. Und in diesem Moment verwenden Sie dies an allen Orten, an denen Sie es benötigen:Mit der HTTPS-Einstellung erkennt die PHP-Anwendung automatisch das richtige Protokoll und erstellt sorgfältig einen relativen Pfad, um Probleme mit gemischten Inhalten zu vermeiden.
Freundliche Grüße.
quelle
Basierend auf der Antwort von @ Ulli Wenn Sie es mit Terraform konfigurieren möchten, finden Sie hier ein Beispiel>
Quelle
quelle
Erstellen Sie eine Datei
.ebextensions/00_forward_http_to_https.config
mit folgendem Inhalt:Stellen Sie sicher, dass Sie die Umgebungsvariable APP_URL zuvor in der AWS-Verwaltungskonsole festgelegt haben.
quelle