在自定义域上使用 Cloudfront 和 SSL 在 ec2 上部署 Nextjs 13,但无法连接到我的应用程序。这是我修复它的方法:

问题描述 投票:0回答:1

发布此内容以防其他人遇到类似的麻烦

因此,我的路由 53 设置有两个指向我的 Cloudfront 域的别名 A 记录,以及两个别名 AAAA 记录。它有我的域名,它的 www 对应域名被列为备用域名。我的来源设置为我的 ec2,而行为的“来源或来源组”设置设置为我的域。我将行为和来源设置为仅 HTTPS,尽管我尝试了 HTTP 和 HTTP -> HTTPS 的不同组合,但没有任何效果。我的 ec2 有适当的安全组,可以在端口 80 和 443 上进行任何位置的访问。我的 ec2 正在运行,并且应用程序运行良好,只要我在 HTTP 上使用其 ipv4 地址及其端口号 443 连接到它。我花了两天时间解决这个问题,但我所做的一切都没有带来任何明显的改变。我看过 YouTube 教程,浏览过这个网站以及其他许多网站上的帖子,但什么也没得到。但是,我决定尝试将我的cloudfront的起源和行为设置切换为仅http,并将行为的缓存行为更改为旧版,然后选择下拉列表中的所有标头,看看这是否至少会给我一个不同的错误,然后结束起来工作。到目前为止,我已经收集到此问题的原因涉及 https 协议阻止我的 vpc 中的资源之间的通信,即使具有安全组的每个资源都已正确配置为接收超过 443 的 https 流量。我正在进一步调查这一点,但如果阅读本文的任何人都有更深刻的见解,我很想了解更多。

amazon-web-services ssl next.js amazon-ec2 aws-route53
1个回答
0
投票

来自 CloudFront 的错误通常有助于解决根本原因。在这种情况下,我认为问题出在 EC2 实例上使用的证书上。与CloudFront一起使用时需要满足以下条件:

  1. 证书应由知名CA颁发。即 CloudFront 执行证书验证/确认。测试这一点很简单,可以通过使用您的源域名(您在 CloudFront 中用作源域)并使用 https 通过浏览器访问它来完成。如果您没有收到证书错误,则可以继续(除非您在笔记本电脑上修改了受信任的证书 ;)

  2. EC2 实例中证书中的通用名称或 SAN 条目应与其中之一匹配

  • 起源域
  • 如果您将 host 标头转发到源,则如果在证书中找到该证书,则该证书将被接受

参考链接

大多数情况下,错误出现在步骤 2,其中 CloudFront 将联系 Origin 并获取不在“已接受”证书中的证书。这将导致 CloudFront 中出现 502 错误。上面的 aws 文档链接提到了证书部分作为警告说明。

处理完上述证书部分后,您可以在 Origin 策略中将其设置回 HTTP/HTTPS 或 HTTPS-Only。

© www.soinside.com 2019 - 2024. All rights reserved.