我使用 S3 来托管我的静态网站(它是一个 Angular 页面),并使用 Route 53 来使用我拥有的域。 (我在 Hostgator 购买了域名)。每当我在这里说和使用“example.com”时,请注意它与我购买的域名同名。在S3我已经水桶了。我们将它们称为 www.example.com 和 example.com。 example.com 拥有应用程序本身,并将其设置为静态网站托管。它还通过适当的存储桶策略获得了公众许可。 www.example.com 只是一个重定向存储桶,它被设置为静态网站托管,仅用于重定向请求。在此存储桶中,“目标存储桶或域”是“example.com”存储桶。
在 Route 53 中,我有一个名为“example.com”的托管区域。在那里,我有 4 个记录集。两个用于设置我购买的要在 AWS 上使用的域。它是“NS - 名称服务器”和“SOA - 授权开始”。它们已正确配置为托管我的域名。另外两个是“A - IPv4 地址”,一个名称为“example.com”,另一个名称为“www.example.com”。在这两种情况下,别名目标是我在 S3 中的“example.com”存储桶。
到目前为止,我一直在关注文档并且效果很好。我可以在浏览器中输入“example.com”或输入“www.example.com”来加载我的域名,这会重定向到“example.com”并加载我的应用程序。到目前为止,一切都很好。该应用程序正在运行,但当然没有 SSL 证书。
然后我在 CloudFront 创建了一个分配来使用我的 SSL 证书。在分发中,我将 Origin 设置为 S3 上“www.example.com”存储桶的端点。我将 CNAMEs 属性设置为 www.example.com、example.com。我使用了 SSL 证书,部署发行版一切正常。到目前为止一切顺利...
在 AWS S3 的 www.example.com 存储桶中,在重定向请求的协议中,我将其设置为“https”,如文档所述。
然后,在 Route 53 中,我使用我创建的 CloudFront 分配设置前面提到的两个“A - IPv4 地址”记录集的别名目标。
就是这样。本来应该完成的,但当我用浏览器访问“example.com”时,总是会收到此错误:
'err_too_many_redirects'
有趣的是,URL 变得安全了,带有 https 和绿色挂锁。但应用程序无法加载。从 www.example.com 到 example.com 的重定向仍然有效。
文档:
https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/tutorial-redirecting-dns-queries.html
https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html
在分发中,我将 Origin 设置为 S3 上“www.example.com”存储桶的端点。
您已将 CloudFront 分配指向错误的存储桶。 这是第一个问题。 您将所有内容都指向始终重定向每个请求的存储桶。
我设置的CNAMEs属性为www.example.com、example.com。
您有两个存储桶,但只有一个 CloudFront 分配。 这是第二个问题。 您需要两个 CloudFront 发行版,一个用于处理 example.com,另一个用于处理 www.example.com。 每个域名只有一个备用域名 (“CNAME”) 值并指向匹配的存储桶。
我遇到了同样的错误,但显然这不是路由问题。 我需要更改 CloudFront 发行版中的行为。
我所做的是: