我正在尝试使用CloudFlare和AWS S3服务的组合来托管静态网站。我的问题是我有一个“ index.html”文件,并直接导航到S3 URL:
http://srdan.nz.s3-website-ap-southeast-2.amazonaws.com
它将加载“ index.html”文件(注意,URL中未提及“ index.html”)。
但是,如果我转到自定义域网址:
它返回存储桶内容的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>"f51109004d6b0518fad4c2f69d950a45"</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”的内容。
答案 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中使用了错误的端点,则域将在根目录返回类似以下响应的内容,而不是在存储桶设置中返回默认文档:
确保您设置的CNAME记录使用-website-
等效端点:
mybucket.com.s3-website-us-west-2.amazonaws.com
正确的格式为<BUCKET NAME>.s3-website-<AWS REGION>.amazonaws.com
,但可以在您的s3存储桶的设置中找到:
不要使用其他人,包括不正确的人
mybucket.com.s3.amazonaws.com
mybucket.com.s3-us-west-2.amazonaws.com
注意:您需要将SSL设置为“灵活”,因为“完全”和“完全(严格)”无效。