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 路由 53
为啥托管静态网站时 Amazon S3 存储桶名称必须与网站名称相同
Amazon S3 CORS 适用于 HTTP,但不适用于 HTTPS