Cloudflare使用S3后端时如何设置默认对象?

时间:2018-10-09 02:14:32

标签: amazon-web-services amazon-s3 cloudflare

我正在尝试使用CloudFlare和AWS S3服务的组合来托管静态网站。我的问题是我有一个“ index.html”文件,并直接导航到S3 URL:

http://srdan.nz.s3-website-ap-southeast-2.amazonaws.com

它将加载“ index.html”文件(注意,URL中未提及“ index.html”)。

但是,如果我转到自定义域网址:

http://srdan.nz

它返回存储桶内容的S3 XML列表:

<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Name>srdan.nz</Name><Prefix></Prefix><Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated><Contents><Key>index.html</Key><LastModified>2018-10-09T01:10:39.000Z</LastModified><ETag>&quot;f51109004d6b0518fad4c2f69d950a45&quot;</ETag><Size>133</Size><StorageClass>STANDARD</StorageClass></Contents></ListBucketResult>

代替“ index.html”的内容。

有人知道为什么会这样吗?如果有人输入URL,如何配置Cloudflare / S3以使“ index.html”文件成为要返回的“默认”值?

我有一种解决方法,我在Cloudflare中添加了自定义“页面规则”以将“ http://srdan.nz/”重定向到“ http://srdan.nz/index.html”,但是,我强烈希望它只返回直接显示“ index.html”的内容。

1 个答案:

答案 0 :(得分:1)

答案是@Michael在问题评论中提到的,但我认为应该写一篇文章……

以示例域mybucket.com为例,我们想使用它通过Cloudflare为s3存储桶的内容提供服务。

虽然以下URL仅对访问S3存储桶mybucket.com.s3.amazonaws.com的内容有效,但在我们的Cloudflare CNAME DNS记录中进行引用并没有好处。

我认为主要问题之一是Cloudflare documentation不能显示正确的静态网站终结点,如AWS S3 documentation中所述,该静态网站终结点可以从s3。

您可能会发现,如果在Cloudflare DNS中使用了错误的端点,则域将在根目录返回类似以下响应的内容,而不是在存储桶设置中返回默认文档:

xml response

答案:使用静态网站终结点

确保您设置的CNAME记录使用-website-等效端点:

  

mybucket.com.s3-website-us-west-2.amazonaws.com

正确的格式为<BUCKET NAME>.s3-website-<AWS REGION>.amazonaws.com,但可以在您的s3存储桶的设置中找到:

s3 properties showing static hosting url

不要使用其他人,包括不正确的人

mybucket.com.s3.amazonaws.com

mybucket.com.s3-us-west-2.amazonaws.com

注意:您需要将SSL设置为“灵活”,因为“完全”和“完全(严格)”无效。