将 AWS Amplify 前端与 EC2 实例连接?
Connecting an AWS Amplify frontend with a EC2 instance?
所以,我现在正在从事一个黑客马拉松项目,为了演示,我通过 Elastic Beanstalk 在 EC2 上启动了一个 NodeJS Express 服务器。在本地使用我们的前端测试服务器的 API 时,它运行得非常好。
现在我们已经将前端部署到 AWS Amplify,在 Route53 中设置域名,并将所有内容连接起来。当我们进入域时,我们的前端看起来很棒,但是当我们尝试使用连接到服务器 API 的功能时,我们得到 net::ERR_SSL_PROTOCOL_ERROR
.
做一些研究,看起来(?)我们必须在 EC2 前面的 Classic Load Balancer 上设置证书。所以我申请了一个证书,并在负载均衡器上创建了一个监听器,如下所示:
Load Balancer Protocol
Load Balancer Port
Instance Protocol
Instance Port
HTTPS
443
HTTPS
3000
但现在我意识到,如果以这种方式设置,我仍然不知道如何将 React Frontend 的 API 调用指向 Load Balancer 而不是 EC2,或者监听器是否设置正确。有人知道我们应该采取什么步骤吗?
关于应用程序的详细信息,后端是一个非常简单的 Express 应用程序,启用了 CORS,前端是一个相当标准的 React 项目,两者都没有什么特别之处。
Instance Protocol
应该是 HTTP。因此您的设置仅在客户端和 CLB 之间使用 HTTPS:
Client--- (HTTPS) ---> CLB --- (HTTP) ---> EC2
另外,为了正确设置 HTTPS,您需要使用自己的域。您不能使用 EB 为您的应用程序提供的默认域。
所以,我现在正在从事一个黑客马拉松项目,为了演示,我通过 Elastic Beanstalk 在 EC2 上启动了一个 NodeJS Express 服务器。在本地使用我们的前端测试服务器的 API 时,它运行得非常好。
现在我们已经将前端部署到 AWS Amplify,在 Route53 中设置域名,并将所有内容连接起来。当我们进入域时,我们的前端看起来很棒,但是当我们尝试使用连接到服务器 API 的功能时,我们得到 net::ERR_SSL_PROTOCOL_ERROR
.
做一些研究,看起来(?)我们必须在 EC2 前面的 Classic Load Balancer 上设置证书。所以我申请了一个证书,并在负载均衡器上创建了一个监听器,如下所示:
Load Balancer Protocol | Load Balancer Port | Instance Protocol | Instance Port |
---|---|---|---|
HTTPS | 443 | HTTPS | 3000 |
但现在我意识到,如果以这种方式设置,我仍然不知道如何将 React Frontend 的 API 调用指向 Load Balancer 而不是 EC2,或者监听器是否设置正确。有人知道我们应该采取什么步骤吗?
关于应用程序的详细信息,后端是一个非常简单的 Express 应用程序,启用了 CORS,前端是一个相当标准的 React 项目,两者都没有什么特别之处。
Instance Protocol
应该是 HTTP。因此您的设置仅在客户端和 CLB 之间使用 HTTPS:
Client--- (HTTPS) ---> CLB --- (HTTP) ---> EC2
另外,为了正确设置 HTTPS,您需要使用自己的域。您不能使用 EB 为您的应用程序提供的默认域。