Wir haben eins www.domain.com
, das in einen AWS Load Balancer aufgelöst wird, der von einer AWS EC2 Nginx-Instanz unterstützt wird.
www.domain.com:8888
Proxys zu einer AWS-Backend-Webanwendung.
www.domain.com:443
stellt statisches HTML von der Festplatte von EC2 bereit, mit Ausnahme von:
/app/
Pfad, der zu einer dynamischen Backend-Anwendung führt, die auf einem EC2 läuft- 404-Antworten, die auch für benutzerdefinierte Fehlerseiten auf dasselbe dynamische Backend EC2 weiterleiten.
Ziel: Wir möchten unser statisches HTML direkt aus dem S3-Speicher unter der Domäne bereitstellen können www.domain.com
(derzeit synchronisieren wir die statischen S3-Dateien mit der Festplatte des Nginx-Servers).
Erwogene Optionen:
Cloudfront mit einer Failover-Ursprungsgruppe kümmert sich gut um den Verkehr auf Port 443. Aber wenn wir eine Verbindung
www.domain.com
mit Cloudfront herstellen, hört offensichtlich nichts zuwww.domain.com:8888
.Wenn wir einen Load Balancer haben, der die Listener bereitstellt,
www.domain.com
können wir mit dynamischem Datenverkehr auf den Ports 443 und 8888 umgehen. Es ist jedoch nicht offensichtlich, wie wir S3 als Zielgruppe für den Load Balancer nutzen können. Ich glaube, dies könnte mit einem VPC-Endpunkt für S3 möglich sein. Aber könnte dies mit 404-Failovern umgehen? (Ref: https://aws.amazon.com/blogs/networking-and-content-delivery/hosting-internal-https-static-websites-with-alb-s3-and-privatelink/ )Wir starten ein Projekt zur Umleitung
www.domain.com:8888
des Datenverkehrs nachalt.domain.com:443
und verwenden dann Option 1. Solange wir jedoch die Links zu beibehalten möchten,www.domain.com:8888
ist es uns meiner Ansicht nach untersagt, Cloudfront als Ziel von zu verwendenwww.domain.com
.Besitzen Sie einen Frontend-Nginx-Proxy, der 8888-Datenverkehr an einen Load Balancer und 443-Datenverkehr an Cloudfront weiterleitet. Dies würde viele der Vorteile von Cloudfront zunichte machen, da der Client-Datenverkehr über einen Proxy geleitet werden müsste, um dorthin zu gelangen. Außerdem müssten wir die SSL-Terminierung über Lets Encrypt außerhalb von Amazon ACM abwickeln.
Option 3 scheint die sauberste Lösung zu sein, wäre aber weder schnell noch einfach umzusetzen, daher suchen wir nach Alternativen.
Gibt es andere Optionen, die wir in Betracht ziehen sollten?