Amazon CloudFront不尊重我的S3网站Bucket的index.html规则

rde*_*ges 67 amazon-s3 amazon-cloudfront

我使用静态网站托管选项在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 Distribution,并告诉它使用'index.html'作为根时,S3刚刚停止工作的index.html行为.

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

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

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

Wad*_*nko 114

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

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

S3上的静态网站托管面板

一旦CloudFront指向S3网站域名,S3网站功能就可以运行.

  • 唯一的缺点是,如果您使用静态网站端点,则无法在CloudFront和S3之间使用SSL.所以,SSL或index.html处理:选择一个. (5认同)
  • 很棒的分辨率,谢谢.这种情况发生在我打赌的很多人身上,因为云端自动填充到存储桶名称,而不是静态网站网址.起初我不清楚这种差异. (4认同)
  • +2 - 刚回来给你一个upvote,因为这解决了我的问题 - 我已经给你一个upvote - 最后一次发生在我身上.棘手的是AWS将CloudFront原点自动填充到您的S3存储桶,但默认情况下不是网站URL,而是S3 URL.您认为AWS会知道S3存储桶已配置为网站,并相应地调整默认值. (3认同)
  • @AlexB仍然如此 - 如果您的域名是您的S3静态网站端点,则无法使用Cloudfront SSL? (2认同)

Mic*_*aev 18

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

首先,确保您拥有Default Root Object云端.如文档中所述,这不适用于subdirectories.

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