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网址。