Amazon EC2 子域的 HTTPS 设置

HTTPS setup for subdomain in Amazon EC2

目标:为我的副项目设置 HTTPS,前端使用 React,后端使用 Express.js

进度:我已经通过 Cloudfront 和 route53 为位于 Amazon s3 中的我的 React 应用程序成功设置了 HTTPS。我通过将 域名 (example.com) 通过 Route53

附加到云端分发来做到这一点

问题: 由于我的应用程序通过 http://ec2-00-00-00.compute-1.amazonaws.com 调用通过 Amazon EC2 托管的后端 express.js 我看到 混合内容错误 因为前端应用程序 (https) 正在尝试访问 ec2 public dns 即 http.

我正在尝试找出为我的后端 EC2 服务器设置 HTTPS 的最佳方法:我已经尝试过 nginx - certbot 但它没有用,因为我没有附加到 ec2 的域名public dns 地址。

我尝试创建一个子域 api.example.com,使用 Amazon Certificate Manager 购买了一个证书并尝试为 api.example.com 指向 EC2 实例 public IP。当我尝试通过 https 访问端点时,这也不起作用。我的安全组配置看起来正确。

我对使用 Load Balancer 还是购买新域感到困惑,有人可以为我指明正确的方向吗?由于这是一个业余项目,我不想采用昂贵的方法,但我愿意尝试任何最佳实践。

提前致谢!

Amazon Certificate Manager and tried setting up the route 53 cname record for api.example.com to point to the EC2 instance public IP.

ACM 证书不能用于实例,只能用于 ELB、CF 发行版和 API 网关。因此,您应该在您的实例上使用来自第三方的 SSL 证书(而不是 self-signed)。您正确地尝试了 nginx - certbot 组合,这是执行此操作的正确方法。因此,我会研究为什么 nginx - certbot 不起作用,尤其是当您已经拥有自己的域时。