【问题标题】:How to configure Nodejs that is in AWS EC2 Instance to accept HTTPS request from client side如何配置 AWS EC2 实例中的 Nodejs 以接受来自客户端的 HTTPS 请求
【发布时间】:2018-07-31 17:12:47
【问题描述】:

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

我们做了什么。

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

问题:

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

【问题讨论】:

  • 如果您在 ec2 上需要 https,为什么不将 ec2 放在负载均衡器后面并将 ACM ssl 附加到它,这样您就可以修复 https 标准。
  • 感谢@KushVyas 的回复,我的 ELB 已经有一个 ACM ssl,并且还为“api.dummydomain.com”域设置了别名。问题是,如何在localhost:3000/dummyapi的nodejs后端代码中使用这个api.dummydomain.com?谢谢

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


【解决方案1】:

我们错过了什么?

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

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

你应该做的是这个。

  1. 创建应用程序负载平衡器
  2. 创建一个目标组并将您的 EC2 添加到该目标组。
  3. 在 ALB 上添加一个侦听器,侦听您的 Web 应用程序连接的端口,并使用转发到后端 EC2 的 HTTP 端口的规则。
  4. 为 ALB 添加路由 53 DNS 别名记录(因为 ALB 有时会消失或更改其 IP 地址)
  5. 将前端代码更改为指向 Route 53 别名记录。

(这是一种非常简单的做事方式,可以让您的 EC2 对互联网等开放等)。

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

AWS EC2 实例可以随时消失,当它们消失时,您的应用程序也会随之关闭。

【讨论】:

  • 第 4 点可能应该是:“更改您的前端代码,使其连接到 ALB 端点(而不是 EC2 IP 地址)”
  • @mcfinnigan。感谢您的反馈意见。我们将尝试这个,稍后我们会通知您进度。
  • @DusanBajic。谢谢你的建议。我们也会尝试一下。
  • 肯定有比这更私密的配置。我看到很多依赖于可通过 Internet 路由的请求,这解决了可用性问题,但创建了一些新的安全问题。此外,适用于更小规模解决方案(ALB 过多)的解决方案将是理想的,而且更切中要害。
猜你喜欢
  • 1970-01-01
  • 2020-11-28
  • 1970-01-01
  • 2012-04-18
  • 2022-01-21
  • 2021-12-22
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多