amazon-s3 - 使用自定义域在 S3 网站上设置索引文档

标签 amazon-s3 web-hosting

我正在尝试为我的 S3 托管网站设置索引文档。我已经

  1. 在存储桶上启用网站托管
  2. 将索引文档设置为“index.html”
  3. 已上传 index.html 文件
  4. 公开了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/

相关文章:

javascript - 我想将 s3 对象的字符串发送到客户端

.htaccess - 将域重定向到子域 + 使其成为 https

php - 虚拟主机安全

dns - 如何快速进行DNS传播?

html - HTTPS 迁移

mysql - 不允许主机连接到 000webhost 中的此服务器

mysql - 大量 mysql 使用 CPU 或内存

amazon-web-services - 从 S3 创建数据源时出现 AWS 机器学习错误

amazon-web-services - 如何解决资源之间的循环依赖: [s3bucketvideo, S3InvokeLambdaPermission]

node.js - 如何使用 IAM 和 Node.js (aws-sdk) 访问 AWS S3 上的存储桶?