如何配置AWS EC2实例中的Nodej以接受来自客户端的HTTPS请求

时间:2018-02-21 07:44:40

标签: node.js amazon-web-services amazon-s3 amazon-ec2 elastic-load-balancer

我想问一下如何配置Nodejs(后端/服务器)以接受来自客户端(前端)的HTTPS请求。

我们做了什么。

  • AWS中注册的域名。
  • 列表项
  • ACM中请求的SSL。
  • 在S3中创建存储桶,并将我们的前端代码(角度5)存储在其中。
  • 在云端创建分发并将我们的自定义ssl放在那里并连接到S3中的存储桶。
  • 我们还设置了ec2实例并将后端代码(节点js)存储在那里。
  • 在我们的前端代码中,我们连接到ec2实例的ip,以便我们可以连接到后端。

问题:

  • 前端无法访问ec2实例中的后端,因为前端是https而后端是http(我们不知道如何在AWS EC2实例中将其配置为从http到https)
  • 您知道如何在aws中设置Web应用程序,前端和后端代码是分开的吗?
  • 我们错过了什么?

1 个答案:

答案 0 :(得分:4)

  

我们错过了什么?

如果我理解正确,您有一个Cloudfront分发服务角度,然后尝试连接到EC2实例 - 我假设EC2的IP地址或公共DNS条目被硬编码到角度代码中。

这不是一个好的安排 - 如果您的EC2发生故障或IP地址发生变化,您需要将新站点推送到S3 - 然后此更改将需要一段时间才能通过Cloudfront传播。

你应该做的是这个。

  1. 创建应用程序负载均衡器
  2. 创建目标组并将EC2添加到该目标组。
  3. 在ALB上添加一个侦听器,侦听您的Web应用程序连接的端口,并使用规则转发到后端EC2的HTTP端口。
  4. 为ALB添加路由53 DNS别名记录(因为ALB有时会消失或更改其IP地址)
  5. 将前端代码更改为指向Route 53 Alias记录。
  6. (这是一种令人难以置信的简单方式,让您的EC2对互联网开放等等。)

    您还应该认真考虑将EC2放入一个跨越至少两个可用区域的自动扩展组,并设置其最小大小以确保至少服务器一次运行。

    AWS EC2实例可以随时消失,当他们执行时,您的应用程序会随之消失。