将 Node js 服务器(在弹性 beanstalk AWS 上)url 更改为 HTTPS

Posted

技术标签:

【中文标题】将 Node js 服务器(在弹性 beanstalk AWS 上)url 更改为 HTTPS【英文标题】:Change Node js server (on elastic beanstalk AWS) url to HTTPS 【发布时间】:2021-05-05 02:50:27 【问题描述】:

我正在尝试使用 AWS s3 存储桶部署我的 React js 应用程序。但是,我对 AWS 还很陌生,并且过得很艰难。这个反应应用程序与节点/快速服务器通信,该服务器托管在弹性 beanstalk 环境中。我之前遇到以下错误:

Mixed Content: The page at 'https://myReactApp.s3.amazonaws.com/index.html' was loaded over HTTPS, but requested an insecure resource 'http://myElasticBeanstalkServer.us-east-1.elasticbeanstalk.com/signIn?username=lsharon&password=test4321'. This request has been blocked; the content must be served over HTTPS.

我开始尝试弄清楚如何将我的 EB 网址“转换”为 HTTPS。我发现了很多关于获取 ssl 证书的信息。我对整个过程很困惑。这是我所做的:

    我确实有一个通过谷歌域注册的域名。我用它来获得一个 ssl 证书。我的 ssl 证书通过 AWS 证书管理器控制台进行验证。但是,我有点困惑这与托管在弹性 beanstalk 上的节点服务器有何关系。我使用 EB url 连接到这个 API……不是我的域名。如何使用我的 ssl 证书来保护我的服务器 url? 我确实找到了一些关于在 Route 53 中创建托管区域以及在我的弹性 beanstalk 环境中的负载均衡器上添加 443 端口的信息。然而,我很快就迷路了。我是在EB环境中只使用443监听,还是我也需要443进程?有人可以向我解释一下吗?另外,关于 Route 53 托管区域,我是使用我的域名还是我的 API(弹性 beanstalk)url 创建托管区域?当我创建别名时,我应该将流量路由到哪里?我的域名、我的 EB 网址还是我的 s3 存储桶?

目前,当我在浏览器中加载我的静态网页时,它呈现良好并显示安全。但是,当我单击其中一个按钮时(因此向我的 EB 网址发送提取请求),它也可以工作,但会更改为不安全并说我的 ssl 不安全。

对于所有问题,我深表歉意。我只是觉得很迷茫,似乎找到了很多信息,但似乎无法让它正常工作。如果有人可以帮助我,我一定会很感激。

【问题讨论】:

【参考方案1】:

要回答您的第一个问题,您必须在某处设置 DNS,无论是在您的 Google Domains 帐户中还是在 Route53 中,具体取决于您希望将谁用作您的 DNS 主机,将域名指向负载平衡器。

我使用 EB url...而不是我的域名连接到此 API。我怎样才能 使用我的 ssl 证书来保护我的服务器 url?

在进行 API 调用时,您必须更改您的前端应用程序以使用与 SSL 证书匹配的域(并且对于这些 API 调用,还要使用 https 而不是 http)。如果您希望网络浏览器停止抱怨这些安全问题,没有其他选择。

要回答您的第二个问题,AWS Certificate Manager 中的 SSL 证书可以附加到负载均衡器,该负载均衡器将为您终止 SSL。负载均衡器仍然可以使用非加密 HTTP 与 EC2 实例通信。因此,您需要做的就是将 SSL 证书附加到负载均衡器中的端口 443 侦听器。

【讨论】:

该死的,如果我知道负载均衡器可以为我处理所有事情,这会为我节省很多时间。无论哪种方式都感谢您提供的信息!

以上是关于将 Node js 服务器(在弹性 beanstalk AWS 上)url 更改为 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

将 node.js 应用程序部署到弹性 beanstalk(使用 express)

AWS 弹性 beanstalk ec2 服务器上的 node.js 命令

使用弹性 beantalk 部署复杂的 node.js 项目

具有弹性 beanstalk 自动缩放的共享 node.js 全局变量

使用带有弹性 beanstalk、nginx 和 node.js 的 websocket 出现问题

Node.js - 在 Amazon EC2 上获取主机 IP 地址