Amazon CloudFront不尊重我的S3网站存储桶的index.html规则


75

我使用静态网站托管选项在Amazon S3上托管了一个静态网站,因此S3将呈现一个文件夹,而无需使我明确指向我的index.html文件。

例如,这是我S3存储桶中页面的直接链接:http : //new.rdegges.com.s3-website-us-east-1.amazonaws.com/category/2009/如您所见,何时您访问该URL时,Amazon S3会自动在该目录内呈现index.html文件,从而使我拥有干净的URL。

所有这些在S3上都可以正常工作。我遇到的问题是使Amazon Cloudfront也能正确处理此行为。当我以我的S3存储桶指定为源创建Cloudfront分发,并告诉它使用'index.html'作为根时,S3已经停止一起工作的index.html行为。

例如,这是我与Cloudfront相同的URL:http ://d1mj00c6pby3gc.cloudfront.net/category/2009/

不幸的是,上面的URL不起作用,但是如果我手动指定索引文件,则可以,例如:http : //d1mj00c6pby3gc.cloudfront.net/category/2009/index.html

我的问题是:我该如何配置Cloudfront以使其尊重我的网站的S3存储桶设置?


您绝对可以将其设置为根目录。但不确定是否每个目录都可以。aws.typepad.com/aws/2010/08/...
DIRN

2
嘿@dirn,是的!我使用的是index.html的默认根目录,但由于某些原因,它不适用于任何子文件夹(仅顶层文件夹)。我发现这很奇怪,因为S3具有相同的设置,并且它也适用于所有子文件夹arg。
rdegges

“不尊重” ..哇!+1从我😃
Abdennour•图米

Answers:


121

S3网站功能可以与Amazon CloudFront结合使用。但是,S3网站使用的域名不同于常规S3存储桶。在这种情况下,您需要将Origin Domain NameCloudFront发行版的原始配置设置为new.rdegges.com.s3-website-us-east-1.amazonaws.com

您可以从S3的“静态网站托管”面板中获取此URL(端点):

S3上的“静态网站托管”面板

将CloudFront指向S3网站域名后,S3网站功能应该可以使用。


5
高分辨率,谢谢。我敢打赌,这会发生在很多人身上,因为Cloudfront会自动完成存储桶名称,而不是静态网站URL。起初,我不清楚区别。
SimplGy 2013年

6
唯一的缺点是,如果您使用静态网站终结点,则不能在CloudFront和S3之间使用SSL。因此,使用SSL或index.html处理:选择一个。
Alex B

1
@AlexB(现在)在添加源时使用“仅HTTP”或“匹配查看器”的选项。“如果您为源协议策略选择Match Viewer,并且查看器使用HTTPS连接到CloudFront,则CloudFront将使用HTTPS连接到您的源。”
Zerkey

3
+2-刚回来给您投票,这解决了我的问题-我已经给您投票-上次发生在我身上。棘手的事情是,AWS会自动将CloudFront来源自动完成到您的S3存储桶,但默认设置不是网站URL,而是S3 URL。您可能会认为AWS将S3存储桶配置为网站,并相应地调整默认值。
sheikhjabootie 2015年

2
@AlexB还是这样-如果原始域名是S3静态网站终结点,则不能使用Cloudfront SSL?
colemerrick

25

我想在接受的答案中添加一些内容。

首先,请确保您Default Root Object的云端环境良好。根据文档中的规定,此规定不适用于subdirectories

设置新的cloudfront发行版时,它可以让您选择存储桶bucket-name.s3.amazonaws.com。请注意,未在URL中指定区域。您需要做的是从s3中获取静态站点url,并将其用作origin url(该区域将在那里)。


我遇到根对象未提供默认index.html的问题。最初,我尝试将其发送到不起作用的cname www.example.com和www.example.com/index.html,当我仅将根对象设置为index.html时,它就起作用了
Jacob Bryan

我必须将CF默认根对象设置为空白(未设置),然后将s3存储桶上的索引文档设置为index.html
Joshua Coady

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.