10

Utworzyłem dystrybucję w chmurze w celu obsługi statycznej witryny internetowej. S3 to serwer źródłowy. Teraz, jeśli uzyskamy dostęp do adresu URL w chmurze, przekierowanie do lokalizacji S3.AWS Cloudfront przekierowanie do wiadra S3

d2s18t7gwlicql.cloudfront.net lub test.telekha.in

w przeglądarce to pokazano https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/dashboard

Oczekuję https://test.telekha.in/#/dashboard

Gdybym dostęp https://test.telekha.in poprzez zwinięcie wraca mój index.html dokument

Jeśli uzyskam dostęp do http://test.telekha.in przez zawinięcie, zwróci

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

Ale w przeglądarce zarówno http i https przekierowanie do https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/

Proszę dać mi znać, jak rozwiązać ten problem.

Odpowiedz

11

Znalazłem problem. Jest z konfiguracją w chmurze. This blog pomógł mi.

Podczas definiowania pochodzenia wybrałem bezpośrednio wiadro S3. Powinniśmy wejść do domeny wiadra S3, jak telekha-test-www.s3-website.ap-south-1.amazonaws.com

+0

Konfiguracja pochodzenia za pomocą adresu URL S3 spowoduje udostępnienie zawartości przy użyciu adresów URL S3 i CF, które mogą być niepożądane. – Kiril

7

Pierwszą rzeczą, którą należy sprawdzić, czy uważasz, że to widzisz, jest uruchomienie curl polecenie poniżej. Jeśli zwróci ona HTTP/1.1 307 Temporary Redirect, widzisz ten 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== 

Najlepszy opis znalazłem tego problemu jest:

S3 aktualizuje DNS dla globalnego punktu końcowego REST hierarchii * .s3.amazonaws.com z zapisem wysyłania żądań do właściwej dla regionu wiadro w krótkim czasie po utworzeniu kubełka, a CloudFront wydaje się polegać na tym, wysyłając żądania we właściwe miejsce. Zanim ta wstępna aktualizacja zostanie zakończona, S3 zwróci przekierowanie, a CloudFront zwróci to przekierowanie do przeglądarki. ~ michael-sqlbot

Biorąc pod uwagę ten problem jest faktycznie z powodu wewnętrznej propagacji DNS nazwy wiadro S3 (co nie jest w 100% jasne, ale wydaje się wysoce prawdopodobne), który występuje podczas konfigurowania wiadro w S3, to powinien Można uniknąć tego problemu, konfigurując publiczną witrynę internetową w S3 przed skonfigurowaniem dystrybucji Cloudfront i zgodnie z doco, należy skonfigurować publiczną nazwę S3 jako pochodzenie w chmurze zamiast nazwy wiadra s3.

Dla porównania, mam zarówno nazwy zasobników S3, jak i nazwy stron S3 skonfigurowane jako pochodzenie Cloudfront i mogę powiedzieć, że oba działają! (ostatecznie?)

Referencje:

0

Okazuje się, że jest to po prostu kwestia rozrządu, które rozwiązuje się po jakimś czasie, czy wszystko jest poprawnie skonfigurowane. Więcej informacji można znaleźć na temat wątku forum AWS this.

Aktualna zaakceptowana odpowiedź tutaj i związana z nią blog article sugeruje włączenie statycznej strony internetowej dla zasobnika S3, a następnie zmianę lokalizacji źródła CF, tak aby wskazywała na statyczną stronę internetową. To rozwiązanie rozwiązuje problem przekierowania, ale z efektem ubocznym, że witryna jest teraz dostępna za pomocą zarówno adresu URL CF lub niestandardowego rekordu CNAME, jak i adresu URL S3.