亚马逊的CloudFront的不尊重我的S3网站桶的index.html的规则(Amazon Clo

2019-08-17 10:09发布

我使用的是静态网站托管选项在Amazon S3上托管静态网站,让S3将呈现一个文件夹,而不让我明确地指出我的index.html文件。

举例来说,这里是一个直接链接到一个网页在我的S3存储桶: http://new.rdegges.com.s3-website-us-east-1.amazonaws.com/category/2009/正如你可以看到,当您访问的网址,亚马逊S3自动呈现index.html文件该目录里面,让我有干净的网址。

这一切都在S3上正常工作。 我遇到的问题是让亚马逊的Cloudfront妥善处理这种行为也是如此。 当我创建的Cloudfront分布指定为原点我的S3存储,并告诉它使用“的index.html”为根,是S3拥有index.html的行为只是停止工作都在一起。

举例来说,这里是我的上述相同的网址上的Cloudfront: http://d1mj00c6pby3gc.cloudfront.net/category/2009/

不幸的是,以上网址无法正常工作,但如果我手动指定索引文件,这样做,例如: http://d1mj00c6pby3gc.cloudfront.net/category/2009/index.html

我的问题是:如何做我需要配置的Cloudfront使得其尊重我的S3桶设置为我的网站?

Answer 1:

S3网站特征可以与Amazon CloudFront的结合使用。 然而,S3网站使用不同的域名比普通S3桶。 在这种情况下,你需要设置Origin Domain Name您的CloudFront的分发的起源配置的new.rdegges.com.s3-website-us-east-1.amazonaws.com

您可以从S3的静态网站主机面板此URL(端点):

一旦CloudFront的是指向S3网站域名,S3网站功能应该工作。



Answer 2:

我想一些东西添加到接受的答案。

首先,确保你有一个Default Root Object上的云锋。 由于在指定的文件 ,这将不适用于subdirectories

当设置CloudFront的新分布,它会让你选择你的水桶bucket-name.s3.amazonaws.com 。 注意该区域没有在URL中指定。 你需要做的就是抓住从S3的静态网站的网址,并使用它作为origin url (该区域将在那里)。



Answer 3:

这可能是在游戏后期,但检查出LAMBDA @边缘 。 您可以拦截起源的请求 ,而不延伸和它们指向的文件夹中的index.html文件。 这些结果会被缓存,所以当它到达一个新的请求拉姆达时,才会执行。



文章来源: Amazon CloudFront Doesn't Respect My S3 Website Bucket's index.html Rules