我想问一下如何配置Nodejs(后端/服务器)来接受来自客户端(前端)的HTTPS请求。
我们做了什么。
- 在 AWS 中注册的域名。
- 列出项目
- 在 ACM 中请求 SSL。
- 在 S3 中创建存储桶,并将我们的前端代码 (Angular 5) 存储在其中。
- 在云前端创建分发并将我们的自定义 ssl 放在那里并连接到 S3 中的存储桶。
- 我们还设置了 ec2 实例并在那里存储我们的后端代码( Node js)。
- 在前端代码中,我们连接到 ec2 实例的 IP,以便可以连接到后端。
问题:
- 前端无法访问ec2实例中的后端,因为前端是https,后端是http(我们不知道如何在AWS EC2实例中配置从http到https)。
- 您知道如何在aws中设置前端和后端代码分离的Web应用程序吗?
- 我们错过了什么?
最佳答案
What did we missed?
如果我理解正确的话,您有一个提供 Angular 服务的 Cloudfront 发行版,然后它尝试连接到 EC2 实例 - 我假设 EC2 的 IP 地址或公共(public) DNS 条目被硬编码到 Angular 代码中。
这不是一个好的安排 - 如果您的 EC2 出现故障或 IP 地址发生变化,您将需要将新站点推送到 S3 - 然后此更改将需要一些时间才能通过 Cloudfront 传播。
你更应该做的是这个。
- 创建应用负载均衡器
- 创建目标组并将您的 EC2 添加到该目标组。
- 在 ALB 上添加一个监听器,监听您的 Web 应用所连接的端口,并使用转发到后端 EC2 的 HTTP 端口的规则。
- 为 ALB 添加路由 53 DNS 别名记录(因为 ALB 有时会消失或更改其 IP 地址)
- 更改前端代码以指向 Route 53 别名记录。
(这是一种极其简单的方法,可以让您的 EC2 对互联网等开放)。
您还应该认真考虑将 EC2 放入至少跨越两个可用区的自动扩展组,并设置其最小大小以确保至少服务器在任何时候都在运行。
AWS EC2 实例可能随时消失,当它们消失时,您的应用程序也会随之消失。
关于node.js - 如何配置AWS EC2实例中的Nodejs以接受来自客户端的HTTPS请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900541/