Bietet AWS eine Möglichkeit, HTTPS-Verkehr basierend auf dem Verzeichnispfad an zwei verschiedene EC2-Instanzen weiterzuleiten?

10

Ich habe mich gefragt, ob Folgendes mit AWS-Angeboten möglich ist.

https://www.example.com/a/-> von Apache auf EC2-Instanz A bereitgestellt

https://www.example.com/b/-> von Apache auf EC2-Instanz B bereitgestellt

Zur Verdeutlichung möchte ich nicht, dass sich Dateien unter einem Verzeichnispfad auf derselben Serverinstanz befinden wie Dateien unter dem anderen Verzeichnispfad.

Ich verstehe, dass dies mit einem Proxy möglich sein kann, aber es gibt eine einfachere Lösung mit einem der AWS-Angebote.

Der EC2 Load Balancer scheint keine Umschaltung basierend auf dem Verzeichnispfad zuzulassen. Route 53 funktioniert auf DNS-Ebene, die keine Pfadinformationen enthält, um darauf basierende IPs zurückzugeben.

Joseph Shih
quelle
Der EC2 Load Balancer ist so dumm, dass er keine Host:Header liest und gefälschten Datenverkehr herausfiltert. Es ist unwahrscheinlich, dass sie Funktionen hinzufügen, nach denen Sie fragen, wenn das Betrachten von Headern zu viel Arbeit für sie ist. Zum Glück haben sie andere Möglichkeiten.
Küken

Antworten:

29

Verwenden Sie den AWS Application Load Balancer , der das pfadbasierte Routing ausführt . Dieser zweite Link ist ein Tutorial, wie es geht.

Kurz gesagt, Sie richten Ihren ALB wie gewohnt ein und führen dann die folgenden Schritte aus (aus dem AWS-Lernprogramm kopiert):

  • Verwenden Sie auf der Registerkarte Listener den Pfeil, um die Regeln für den Listener anzuzeigen, und wählen Sie dann Regel hinzufügen . Geben Sie die Regel wie folgt an:

  • Für die Zielgruppe , wählen Sie die zweite Zielgruppe , die Sie erstellt haben .

  • Für Pfad Muster , die genauen Muster angeben , um für pfadbasierte Routing verwendet werden (zB / img / *). Weitere Informationen finden Sie unter Listener-Regeln.

  • Wählen Sie Speichern .

Tim
quelle
Vielen Dank! Ich habe EC2 Application Load Balancer ursprünglich ausgecheckt, den Assistenten durchlaufen, aber nie einen erstellt. Der Assistent hat keine Pfadoption angegeben. Wie im Tutorial gezeigt, muss man es zuerst erstellen und anschließend die Regeln bearbeiten.
Joseph Shih
9

Neben Tims hervorragender Antwort können Sie dies auch mit CloudFront erreichen .

Zuerst erstellen Sie Ihre Verteilung , das Hinzufügen Ursprünge für EC2 Instanz A und EC2 Instanz B (die auch Loadbalancer, nicht-AWS - Hosts sein könnte, oder sogar S3 Eimer).

Richten Sie dann die Verhaltensregeln für den Cache ein , um / a / * und / b / * den entsprechenden Ursprüngen zuzuordnen.

Ob es sinnvoll ist, CloudFront für diesen Zweck zu verwenden, hängt von Ihrer Anwendung ab und erfordert ein CDN.

Zach Lipton
quelle
4
Dies könnte auch gelten , wenn man wollte /a*und /b*durch verschiedene Dienste, verschiedene Konten, verschiedene Regionen oder sogar einen Weg durch etwas in AWS und der anderen an anderer Stelle ausgeführt behandelt behandelt werden. CloudFront hat viele Anwendungsfälle, für die konzeptionell überhaupt kein CDN erforderlich ist.
Michael - sqlbot