Cloudflare 如何在使用 S3 后端时设置默认对象?
Cloudflare how to set default object when using S3 backend?
我正在尝试结合使用 CloudFlare 和 AWS S3 服务来托管静态网站。我的问题是我有一个 "index.html" 文件并直接导航到 S3 URL:
http://srdan.nz.s3-website-ap-southeast-2.amazonaws.com
它加载 "index.html" 文件(注意,URL 中没有提到 "index.html")。
但是,如果我转到自定义域 URL:
它 return 是存储桶内容的 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" 文件成为 "default" 到 return 的东西?
我有一个解决方法,我将自定义 "Page Rule" 添加到 Cloudflare 以重定向“http://srdan.nz/" to "http://srdan.nz/index.html”但是,我强烈希望它只是 return 内容"index.html" 直接。
这个问题的答案正如@Michael 在问题的评论中提到的那样,但我认为它值得一写...
以我们希望用来通过 Cloudflare 提供 s3 存储桶内容的示例域 mybucket.com
为例。
虽然以下 URL 仅适用于访问 S3 存储桶的内容 mybucket.com。s3.amazonaws.com 它不适合在我们的 Cloudflare CNAME DNS 记录中引用。
我认为主要问题之一是 Cloudflare documentation doesn't show the correct static website endpoint as stated in the AWS S3 documentation 用于从 s3 提供静态网站。
您可能会发现,如果您在 Cloudflare DNS 中使用了不正确的端点,您的域将 return 在根目录中出现类似于以下响应的内容,而不是在存储桶设置中设置的默认文档:
答案:使用静态网站端点
确保您设置的 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-美国西部-2.amazonaws.com
注意:您需要将 Cloudflare 中的 SSL 设置为 'Flexible',因为 'Full' 和 'Full(strict)' 不起作用。
我正在尝试结合使用 CloudFlare 和 AWS S3 服务来托管静态网站。我的问题是我有一个 "index.html" 文件并直接导航到 S3 URL:
http://srdan.nz.s3-website-ap-southeast-2.amazonaws.com
它加载 "index.html" 文件(注意,URL 中没有提到 "index.html")。
但是,如果我转到自定义域 URL:
它 return 是存储桶内容的 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" 文件成为 "default" 到 return 的东西?
我有一个解决方法,我将自定义 "Page Rule" 添加到 Cloudflare 以重定向“http://srdan.nz/" to "http://srdan.nz/index.html”但是,我强烈希望它只是 return 内容"index.html" 直接。
这个问题的答案正如@Michael 在问题的评论中提到的那样,但我认为它值得一写...
以我们希望用来通过 Cloudflare 提供 s3 存储桶内容的示例域 mybucket.com
为例。
虽然以下 URL 仅适用于访问 S3 存储桶的内容 mybucket.com。s3.amazonaws.com 它不适合在我们的 Cloudflare CNAME DNS 记录中引用。
我认为主要问题之一是 Cloudflare documentation doesn't show the correct static website endpoint as stated in the AWS S3 documentation 用于从 s3 提供静态网站。
您可能会发现,如果您在 Cloudflare DNS 中使用了不正确的端点,您的域将 return 在根目录中出现类似于以下响应的内容,而不是在存储桶设置中设置的默认文档:
答案:使用静态网站端点
确保您设置的 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-美国西部-2.amazonaws.com
注意:您需要将 Cloudflare 中的 SSL 设置为 'Flexible',因为 'Full' 和 'Full(strict)' 不起作用。