Ich habe eine Domäne formulagrid.com
.Unterstützt HTTPS URL-Umleitung mit einer einzigen CloudFront-Verteilung
Ich verwende AWS S3, um es als statische Website zu hosten. Mein Problem war, dass ich die www-Subdomain auf die blanke Domain so umleiten wollte:
https://www.formulagrid.com -> https://formulagrid.com
http://www.formulagrid.com -> https://formulagrid.com
Amazon bietet URL Umleitung von S3 Eimer auf S3 Eimer, wenn beide Setup sind für statische Website-Hosting.
So was hatte ich gesetzt zu tun bis zwei Eimer:
formulagrid.com
- eigentliche Websitewww.formulagrid.com
- existiert nur auf der eigentlichen Website
Das funktioniert völlig in Ordnung neu auszurichten Sie arbeiten nur über HTTP, aber S3 hat überhaupt keine Unterstützung für HTTPS.
Die Möglichkeit, HTTPS für die Verbindung mit einer statischen S3-Website zu verwenden, besteht darin, eine CloudFront-Verteilung vor einem S3-Bucket einzurichten. Obwohl CloudFront HTTPS bereitstellt, existiert es hauptsächlich als CDN.
Anfangs hatte ich ein einzelnes CloudFront-Verteilungssetup vor dem S3-Bucket mit der aktuellen Site. Alles schien funktionstüchtig zu sein: Die Site wurde über das CDN verteilt, es hatte HTTPS und HTTP wurde zu HTTPS umgeleitet.
Es gab eine Ausnahme.
https://www.formulagrid.com
eine völlig gebrochene Seite war
Nach dem Versuch, die Quelle des Fehlers für eine Weile zu finden, erkennen ich, es ist, weil es nicht durch das CDN würde und versuchen S3 über den Zugriff HTTPS funktioniert nicht.
Schließlich musste ich noch eine weitere Verteilung bereitstellen, um vor dem S3 Bucket zu sitzen, so dass es über HTTPS zugänglich war. Hier kommen meine Bedenken ins Spiel, denn CloudFront möchte, wie ich bereits erwähnt habe, ein CDN sein.
Es macht für mich keinen Sinn, ein CDN vor einer URL zu haben, die gerade zu einer anderen weiterleitet. Außerdem wirft es die Frage auf, ob ich für jede Anfrage, die die Subdomain www
erreicht, doppelt belastet würde, weil sie nach der Umleitung auf die andere CloudFront-Distribution treffen würde.
Das ist frustrierend, weil ich versuche, eine "serverlose" Architektur mit Lambda zu machen, und eine EC2-Instanz nur für URL-Rewriting bereitstellen zu lassen, ist nichts, was ich tun möchte, wenn es mein letzter Ausweg ist.
Die Lösung wäre trivial, wenn Amazon irgendeine Form von URL Neuschreiben anbieten würde oder wenn CloudFront selbst umleiten würde, aber keine von beiden existiert so weit ich weiß (lass es mich wissen, wenn sie das tun).
Ich bin neu in AWS, also hoffe ich, dass jemand mit mehr Erfahrung mir in die richtige Richtung zeigen kann.
Danke für die Antwort! Ich habe im Prinzip alles getan, was du gesagt hast. Ich habe eine Frage. Für Anfragen, die umgeleitet werden, geht es nicht 'CDN -> leer S3 -> CDN -> S3'? Das ist mein Hauptproblem. – m0meni
Nachdem CloudFront die Weiterleitung aus dem leeren Bucket zwischengespeichert hat, wäre CF> CF> S3, und wenn der Inhalt der S3-Site zwischengespeichert wird, nur CF> CF. Nach der ersten Landung werden sie zur blanken Domain weitergeleitet und nachfolgende Links würden sie dort halten ... das sollte nicht anders funktionieren, als wenn CF die native Fähigkeit hätte, auf andere Domains umzuleiten - diese anfänglichen Anfragen würden immer noch zweimal CF treffen , da die Weiterleitung den Browser dazu bringt, was der Browser * immer * annehmen wird, ist ein anderer Ort, weil sich der Hostname ändert ... ob es tatsächlich derselbe Rechner ist oder nicht. –
Würde das nicht bedeuten, dass ich zweimal pro umgeleiteter Anfrage berechnet würde? Einmal für jede CF-Anfrage? – m0meni