我正在尝试为我的 S3 托管网站设置索引文档。我已经
- 在存储桶上启用网站托管
- 将索引文档设置为“index.html”
- 已上传 index.html 文件
- 公开了index.html 文件。
索引文档在使用原始 AWS URL 导航到存储桶的根目录时有效,但在使用自定义域时无效:
http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com/index.html (有效)
http://static.appgrinders.com.s3-website-us-east-1.amazonaws.com (有效)
http://static.appgrinders.com/index.html (有效)
http://static.appgrinders.com (访问被拒绝 - 403 错误)
最佳答案
您的 DNS 配置不正确。
您指向的 REST 端点之一 (CNAME s3.amazonaws.com
) 不支持索引文档。您需要 DNS 指向网站托管端点,在本例中为 CNAME static.appgrinders.com.s3-website.us-east-1.amazonaws.com
。该端点在 S3 控制台中可见。
此更改将解决您的问题。
http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html
暴露错误配置的本质(在我在 DNS 中确认之前)是 XML 错误。托管端点的网站不会返回 XML 错误 - 它们返回相同的信息,但它包装在一些简单的 HTML 中,而不是 XML 中。
但请注意,如果您希望通过 SSL 访问您的网站,您仍然需要使用 CloudFront。 S3 中的自定义域需要 CloudFront 的帮助来支持 SSL。与 REST 端点不同,托管端点的网站根本不监听端口 443。
在 CloudFront 配置中,您需要避免相同的错误 - 不要从下拉列表中选择存储桶名称,因为这会将请求发送到 REST 端点。您需要提供网站端点主机名作为源。
关于amazon-s3 - 使用自定义域在 S3 网站上设置索引文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44296538/