10

我創建了一個用於爲靜態網站提供服務的cloudfront發行版。 S3是原始服務器。 現在,如果我們訪問雲端URL,它將重定向到S3位置。AWS Cloudfront重定向到S3存儲桶

d2s18t7gwlicql.cloudfront.net 或 test.telekha.in

在瀏覽器中它顯示 https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/dashboard

我期待https://test.telekha.in/#/dashboard

如果我通過捲曲訪問https://test.telekha.in返回我的index.html文件

如果我通過curl訪問http://test.telekha.in它返回

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

但在瀏覽器HTTP和HTTPS重定向到https://telekha-test-www.s3.ap-south-1.amazonaws.com/index.html#/

請讓我知道如何解決這個問題。

回答

11

我發現了這個問題。它是與雲端配置。 This博客幫了我。

定義原點時,我直接選擇了S3存儲桶。我們應該進入S3桶的領域,如telekha-test-www.s3-website.ap-south-1.amazonaws.com

+0

使用S3 URL配置原點可以使用可能不合需要的S3和CF網址提供內容。 – Kiril

7

首先要檢查你是否認爲你看到這是運行卷曲命令如下。如果它返回HTTP/1.1 307 Temporary Redirect,那麼你看到這個問題。

$ 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== 

我發現這個問題的最好描述是:

S3更新DNS全球REST端點層次* .s3.amazonaws.com用一記將請求發送到正確的區域爲該存儲桶在創建存儲桶後的很短時間內出現,CloudFront依賴於此將請求發送到正確的位置。在初始更新完成之前,S3將返回重定向,CloudFront將重定向返回給瀏覽器。 〜michael-sqlbot

鑑於這一問題實際上是由於S3 bucket名稱的內部DNS傳播(這是不是100%清楚,但似乎很有可能),當您在S3配置桶發生這種情況,那麼就應該可以通過在配置Cloudfront發行版之前在S3中配置公共網站來避免此問題,並且根據doco,將S3公共網站名稱配置爲雲端源,而不是s3存儲區名稱。

作爲參考,我將S3存儲桶名稱和S3網站名稱配置爲Cloudfront來源,我可以說它們都可以工作! (最終?)

參考文獻:

0

事實證明這只是如果一切配置正確,而在此之後自我修復的時間問題。更多信息可在this AWS論壇主題中找到。

當前接受的答案在這裏和鏈接blog article建議爲您的S3存儲桶啓用靜態網站,然後將CF原點更改爲指向該靜態網站。此解決方案確實可以解決重定向問題,但副作用是您的網站現在可以使用CF網址或自定義CNAME以及使用S3網址。