带有 HTTPS 的 Ubuntu 18.04 EC2 实例上的 Apollo 服务器
Posted
技术标签:
【中文标题】带有 HTTPS 的 Ubuntu 18.04 EC2 实例上的 Apollo 服务器【英文标题】:Apollo Server on Ubuntu 18.04 EC2 instance with HTTPS 【发布时间】:2020-03-21 09:49:22 【问题描述】:我正在尝试将我的简单阿波罗服务器部署在来自 Amazon Web Services(AWS) EC2 的 Ubuntu 18.04 实例上。它工作正常,但我需要/希望流量改为通过 HTTPS。我想知道哪个可能是最好的选择。我用“forever”(“forever start lib/index.js”)运行代码,也使用yarn(启动项目“yarn start”)。我可以使用 ip 地址 () 访问服务器,一切正常。我想尽快做,已经尝试过使用 apollo-server-lambda 和其他 Nodejs 托管网站。
【问题讨论】:
【参考方案1】:在 AWS 上更简单的方法是使用 EC2 负载均衡器。您只需要创建一个应用程序负载均衡器并将您的实例添加到目标组。创建负载均衡器后,您可以轻松地在负载均衡器上应用 SSL 证书。这种方法根本不需要您更改应用程序代码。
请参考此文档。 https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html
如果您不想使用负载均衡器,则需要在应用程序级别应用 SSL 证书。希望这会有所帮助。
【讨论】:
我真的很希望这个,我能够启动负载均衡器,但是通过 http 和 https 出现“502 bad gateway”错误。 我认为这是因为负载均衡器使用健康检查来识别健康实例。是否配置了健康检查。它是否显示一个健康的实例。 嗯,正如你所说,我的实例监听端口 4000(阿波罗服务器)是不健康的“健康检查失败,这些代码:[502]” 好的,如果我在“编辑健康检查”上设置健康检查,协议应该是http,路径必须是“/”?或者“/lib/index.js?因为我使用Yarn来运行项目 协议应该是http,因为到负载均衡器的流量是https。但是从负载均衡器到实例的流量是 http。 url 应该是您的应用程序公开的路由。例如,如果您使用的是 express,它可能是您在 express 中定义的路由之一,它将返回 2xx http 响应。或者,您可以将协议设置为 TCP 并将端口设置为 4000以上是关于带有 HTTPS 的 Ubuntu 18.04 EC2 实例上的 Apollo 服务器的主要内容,如果未能解决你的问题,请参考以下文章
Ubuntu 18.04 上的“E:无法找到包 python-pip”[重复]
ubuntu18.04安装opencv3.4.3遇到问题解决方法
解决Ubuntu18.04安装ros报错E: Unable to locate package ros-melodic-desktop-full