AWS CloudFront err_too_many_redirects

AWS CloudFront err_too_many_redirects

我正在使用 S3 托管我的静态网站(这是一个 Angular 页面)和 Route 53 以便能够使用我拥有的域。 (我在 Hostgator 购买了域名)。每当我在这里说和使用 'example.com' 时,请注意这与我购买的域名相同。在 S3 中我必须要水桶。我们称它们为 www.example.com 和 example.com。 example.com 包含应用程序本身,它被设置为静态网站托管。它还具有 public 权限和适当的存储桶策略。 www.example.com 只是一个重定向存储桶,它被设置为静态网站托管,仅用于重定向请求。在此桶中,'target bucket or domain' 是 'example.com' 桶。

在 Route 53 中,我有一个名为 'example.com' 的托管区域。在那里,我有 4 个记录集。两个用于设置我购买的用于 AWS 的域。这是一个 'NS - Name server' 和一个 'SOA - Start of authority'。它们已正确配置为托管我的域名。另外两个是'A - IPv4 address',一个名字是'example.com',另一个名字是'www.example.com'。在这两种情况下,别名目标是我在 S3 中的 'example.com' 存储桶。

到目前为止,我一直在关注文档,它运行良好。我可以在浏览器中键入 'example.com' 或键入 'www.example.com' 来加载我的域,这会重定向到 'example.com' 并加载我的应用程序。到目前为止,一切都很好。该应用程序正在运行,但当然没有 SSL 证书。

然后我在 CloudFront 创建了一个 Distribution 来使用我的 SSL 证书。在分发中,我将 Origin 设置为我在 S3 的 'www.example.com' 存储桶的端点。 CNAME 属性 我设置为 www.example.com, example.com。我使用了我的 SSL 证书,并且一切正常以部署分发。到目前为止一切顺利...

在 AWS S3 中,在 www.example.com 存储桶中,在重定向请求的协议中,我将其设置为 'https',如文档所述。

然后,在 Route 53 中,我使用我创建的 CloudFront 分配设置前面提到的两个 'A - IPv4 address' 记录集的别名目标。

就是这样。本来应该完成的,但是当我使用浏览器访问 '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/Route53/latest/DeveloperGuide/migrate-dns-domain-inactive.html#migrate-dns-get-zone-file-domain-inactive

https://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html

In the distribution, I set the Origin as the endpoint of my 'www.example.com' bucket at S3.

您已将 CloudFront 分配指向错误的存储桶。这是第一个问题。您将所有内容都指向始终重定向每个请求的存储桶。

The CNAMEs property I set as www.example.com, example.com.

您有两个存储桶,但只有一个 CloudFront 分配。这是第二个问题。您需要两个 CloudFront 分配,一个用于处理 example.com,另一个用于处理 www.example.com。每个只有一个备用域名 ("CNAME") 值并指向匹配的存储桶。