Amazon S3 静态 Web 托管不适用于自定义域名(点问题)

Posted

技术标签:

【中文标题】Amazon S3 静态 Web 托管不适用于自定义域名(点问题)【英文标题】:Amazon S3 static web hosting not working with custom domain name (dot issue) 【发布时间】:2013-12-06 22:19:31 【问题描述】:

我按照 S3 文档上的说明在那里托管了一个静态网站。一切都适用于 S3 提供的域名。我可以访问“examplebucket.s3-website-us-east-1.amazonaws.com”

但是,当我转发我自己的自定义域名时,域名提供商在我的域的最后添加了一个点,然后就像我正在访问“examplebucket.s3-website-us-east-1.amazonaws .com.”,这不起作用,因为亚马逊认为您正在访问不同的地址。然后给我404错误。

有什么解决方法吗?或者我应该在 S3 中设置的任何地方?

【问题讨论】:

我认为您可能误诊了这一点,因为 CNAME 引用的域与定义 CNAME 本身的区域不同......总是必须以点结尾。这是正常的,不应该破坏任何东西。 另外...您网站的主机名(您要“转发”的网站)必须与存储桶的名称完全相同相同。网站“example.com”只能在名为“example.com”的存储桶中运行,而网站“www.example.com”只能在名为“www.example”的存储桶中运行。 com" ...两者不可互换,您无法使用 DNS 和 S3 静态网站托管将域名成功映射到任何其他名称的存储桶。这是你在做什么? 【参考方案1】:

我知道这对于最初的问题来说为时已晚,但可能会有更多人遇到同样的问题(我上周)。

我在尝试使用 CloudFormation 在 route53 中创建路由时遇到了同样的问题。我试图将我的域 www.example.com 重定向到 example-bucket.s3-website-eu-west-1.amazonaws.com

事实证明,您无法重定向到任意存储桶。存储桶名称必须与您尝试使用别名的域相同。所以如果你想重定向www.example.com,你的bucket名称必须是www.example.com,并且URL必须是www.example.com.s3-website-eu-west-1.amazonaws.com

此外,cloudformation 的语法很奇怪。 Cloudformation 不需要存储桶的名称(它已经知道)。它只需要端点。

所以不要使用类似的东西

"AliasTarget": 
               "DNSName" : "example-bucket.s3-website-eu-west-1.amazonaws.com",
               "HostedZoneId" : "<zoneID>"
             ,

你需要

"AliasTarget": 
               "DNSName" : "s3-website-eu-west-1.amazonaws.com",
               "HostedZoneId" : "<zoneID>"
             ,

还有route53重定向到哪里,因为路由的名字必须和bucket的名字一样。

相关问题https://***.com/a/5048129/54256

【讨论】:

以上是关于Amazon S3 静态 Web 托管不适用于自定义域名(点问题)的主要内容,如果未能解决你的问题,请参考以下文章

Amazon S3 静态托管自定义域

在 Amazon S3 中托管静态网站而不使用 Amazon 路由 53

为啥托管静态网站时 Amazon S3 存储桶名称必须与网站名称相同

Amazon S3 CORS 适用于 HTTP,但不适用于 HTTPS

Push 不适用于托管在 Localhost/amazon beanstalk 上的 Parse-server

尽管存储桶是公共的,但 Amazon S3 base64 图像不适用于 og:image 标签