10

Ich habe eine Cloudfront-Distribution erstellt, um die statische Website zu bedienen. S3 ist Ursprungsserver. Wenn wir jetzt auf die Cloudfront-URL zugreifen, wird sie zum S3-Standort umgeleitet.AWS Cloudfront, die zu S3-Bucket umleitet

d2s18t7gwlicql.cloudfront.net oder test.telekha.in

Im Browser wird es zeigt https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/dashboard

Ich erwarte https://test.telekha.in/#/dashboard

Wenn ich https://test.telekha.in durch curl zugreifen kehrt meine index.html Dokument

Wenn ich auf http://test.telekha.in durch curl zugreifen, kehrt es zurück

<html> 
<head><title>301 Moved Permanently</title></head> 
<body bgcolor="white"> 
<center><h1>301 Moved Permanently</h1></center> 
<hr><center>CloudFront</center> 
</body> 
</html> 

Aber in Browser sowohl HTTP und HTTPS umleiten zu https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/

Sie mir bitte, wie dieses Problem zu lösen.

Antwort

11

Ich habe das Problem gefunden. Es ist mit Cloudfront-Konfiguration. This Blog hat mir geholfen.

Beim Definieren des Ursprungs habe ich direkt S3-Bucket ausgewählt. Wir sollten die Domäne des S3-Buckets wie telekhatest-www.s3-website.ap-south-1.amazonaws.com eingeben

+0

Durch die Konfiguration des Ursprungs mit der S3-URL werden Inhalte sowohl mit S3- als auch mit CF-URLs zur Verfügung gestellt, die möglicherweise unerwünscht sind. – Kiril

7

Die erste Sache, um zu überprüfen, ob Sie denken, dass Sie dies sehen, ist die Locke zu laufen Befehl unten. Wenn es HTTP/1.1 307 Temporary Redirect zurückgibt, dann sehen Sie dieses Problem.

$ curl -I https://YOUR_CF_DOMAINNAME.cloudfront.net/ 

HTTP/1.1 307 Temporary Redirect 
Content-Type: application/xml 
Content-Length: 0 
Connection: keep-alive 
x-amz-bucket-region: ap-southeast-2 
Location: http://yourS3bucketname.s3-ap-southeast-2.amazonaws.com/ 
Date: Wed, 12 Jul 2017 00:20:27 GMT 
Server: AmazonS3 
Age: 1775 
X-Cache: Hit from cloudfront 
Via: 1.1 someid.cloudfront.net (CloudFront) 
X-Amz-Cf-Id: someguid== 

Die beste Beschreibung, die ich für dieses Problem zu finden ist:

S3 aktualisiert die DNS für die globale Endpunkt Hierarchie REST * .s3.amazonaws.com mit einem Rekord für Anfragen an den richtigen Bereich zu senden Der Bucket wird innerhalb einer kurzen Zeit nach der Bucket-Erstellung angezeigt, und CloudFront scheint darauf angewiesen zu sein, die Anforderungen an den richtigen Ort zu senden. Bevor diese anfängliche Aktualisierung abgeschlossen ist, gibt S3 eine Weiterleitung zurück, und CloudFront gibt diese Weiterleitung an den Browser zurück. ~ michael-sqlbot

dieses Problem Gegeben tatsächlich aufgrund der internen DNS-Ausbreitung des S3-Bucket Name ist (was nicht 100% klar ist, scheint aber sehr wahrscheinlich), das auftritt, wenn Sie den Eimer in S3 konfigurieren, dann sollte es Sie können dieses Problem vermeiden, indem Sie eine öffentliche Website in S3 konfigurieren, bevor Sie die Cloudfront-Distro konfigurieren, und den öffentlichen Web-Namen S3 als Ursprung der Cloudfront und nicht als s3-Bucketname unter doco konfigurieren.

Als Referenz habe ich sowohl S3-Bucket-Namen und S3-Website-Namen als Cloudfront-Ursprungs konfiguriert und ich kann sagen, dass sie beide funktionieren! (schließlich?)

Referenzen:

0

stellte sich heraus, das nur ein Timing-Problem ist, das sich nach einer Weile fixiert, wenn alles richtig konfiguriert ist. Weitere Informationen finden Sie unter this AWS Forum-Thread.

Die aktuelle akzeptierte Antwort hier und verlinkt blog article vorschlagen, die statische Website für Ihre S3-Bucket aktivieren und dann CF Herkunft ändern, um auf diese statische Website zu zeigen. Diese Lösung löst das Redirect-Problem, aber mit dem Nebeneffekt, dass Ihre Website jetzt sowohl mit der CF-URL als auch mit Ihrem benutzerdefinierten CNAME sowie mit der S3-URL verfügbar ist.