node.js - 如何配置AWS EC2实例中的Nodejs以接受来自客户端的HTTPS请求

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

我想问一下如何配置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 传播。

你更应该做的是这个。

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

(这是一种极其简单的方法,可以让您的 EC2 对互联网等开放)。

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

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

关于node.js - 如何配置AWS EC2实例中的Nodejs以接受来自客户端的HTTPS请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900541/

相关文章:

javascript - 找不到属性 "parsingMode"nodejs jsdom

ruby-on-rails - 大文件从 S3 到 Google Cloud Storage 的内存高效传输

hadoop - Spark 2.0 弃用 'DirectParquetOutputCommitter' ,没有它怎么活?

mysql - 如何在EXPRESSJS/MYSQL中获取父子关系?

redirect - 如何在 Node.js + Express 中重定向嵌套 url

java - 在 EC2 上运行 Java EE 应用程序

amazon-web-services - Amazon Lex - 闯入

amazon-web-services - 网站托管在 AWS S3 上的特定文件夹中

node.js - 带有可能为空参数的 find() 语句

amazon-web-services - 解决ecs中docker容器中使用php时出现太多重定向错误