无法让 aws cloudfront / route53 解析我的域名

无法让 aws cloudfront / route53 解析我的域名

我已经设置了一个带有 SSL 的 cloudfront 发行版,指向一个公共的、设置为静态网站的 s3 存储桶。我选择了将 HTTP 重定向到 HTTPS 的选项,因为我想强制使用 HTTPS。

我设置了 route53,使其具有别名类型的 A 和 AAAA 记录,example.com并使用它解析为 cloudfront 域名。当我这样做时,“托管区域 ID”自动出现,表明亚马逊识别了 cloudfront 域。

我可以在浏览器中访问 c​​loudfront 端点并查看我的网站,但是,如果我直接访问example.com(没有 HTTPS,没有 www),那么我会看到:

403 错误 无法满足请求。错误请求。由 cloudfront (CloudFront) 生成请求 ID:xDCmX7k8EFGGLAfjgpJcJ7AD-_mRfdBseTsqEP2aXfSWQ5S2mTMwuA==

但是,如果我尝试https://example.com,那么我只会看到一张空白页。

我尝试将example.com和都www.example.com放入 cloudfront cnames 字段,但似乎没有任何作用,所以我目前已将它们删除。

答案1

您需要在 CloudFront CNAME 设置中同时拥有example.comwww.example.com。但是,添加这些后,您等待了多长时间才进行测试?更改后,CloudFront 需要重新部署到所有边缘位置,这有时可能需要一段时间。

您可以在分发列表中查看状态 - 任何显示“部署”的内容,您都需要等待 - 通常大约 15 分钟,但我发现有时可能需要长达一个小时。

部署更改后,您还需要清除浏览器缓存(可以在隐身窗口中尝试),以确保您从服务器请求最新的内容。301 重定向(CloudFront 使用它从 HTTP 重定向到 HTTPS)被视为“永久”重定向,您的浏览器可能会缓存它并且不会再次向 CloudFront 询问它。

确保测试顺利进行的最简单方法通常是使用curl

curl --head --location http://example.com
curl --head --location http://www.example.com
curl --head --location https://example.com
curl --head --location https://www.example.com

对于其中的每一个,您都应该获得响应,例如从 http 到 https 地址的 301 重定向,然后在 https 地址获得 200 OK。

理想情况下..您可能实际上希望为 www(或裸域,如果 www 是您的主域)设置另一个 CloudFront 分发,指向一个带有简单重定向的存储桶,以确保每个人最终都到达您喜欢的地址。

但要记住的主要事情是...等待在对发行版进行任何更改后。超过 100 个边缘位置被部署到。

相关内容