如何使特定端口在AWS中公开可用

时间:2019-06-03 21:49:12

标签: amazon-web-services amazon-cloudfront aws-load-balancer

我使用经典的负载均衡器和Cloudfront在https上将我的React网站托管在AWS上,但是现在我还需要打开端口1234。当前使用端口1234浏览域时,无法显示该页面。我要打开端口1234的原因是因为这是我的nodeJs Web服务器在运行的地方,以便React与之通信。

我尝试将端口1234添加到我的负载均衡器侦听器设置中,尽管没什么区别。值得注意的是,负载均衡器运行状况检查面板似乎只有一个值为HTTP:80/index.html。我假设负载均衡器可以监听端口80和1234(即使它只能对一个端口号执行运行状况检查)?

我需要使用操作组或其他方式打开端口吗?请帮忙,任何建议,不胜感激。

非常感谢,

负载均衡器设置

load balancer settings

基础结构

我正在使用以下

  • 安装了两个代码项目的EC2(免费版)(在同一计算机上的不同网站中反应网站和节点服务器)
  • 已创建证书(使用证书管理器)
  • 我已经创建了CloudFront发行版并使用电子邮件对其进行了验证。我的证书在云端被选为客户SSL证书
  • 我有一个经典的负载均衡器(实例指向我唯一的EC2),状态为InService。当我访问负载均衡器DNS名称值时,我会看到我的React网站。负载平衡器侦听HTTP端口80。我添加了端口1234,但这无济于事

注意: 请注意,该项目是学习AWS,React和NodeJ的项目,因此如果出现异常,请指出

EC2实例屏幕截图

EC2 screen

安全组屏幕截图

security group screenshot

负载均衡器屏幕截图

load balance configuration

目标组屏幕截图

target group settings

尝试注册目标组

registered targets

1 个答案:

答案 0 :(得分:0)

感谢您阐明了您的体系结构。

我现在将CloudFront排除在游戏之外,并确保您的设置仅适用于负载平衡器。当一切都正确配置后,您可以轻松添加Cloudfront作为下一步。通常,对于IT领域中的所有事物而言,构建一个可以运行的简单系统并一次增加一个步骤的复杂性要比调试无法运行的复杂系统要容易得多。

这个想法是要有一个带有two listeners的应用程序负载均衡器,一个用于Web(TCP 80),一个用于API(TCP 123)。 ALB将具有两个目标组(每个EC2实例上的每个端口一个),您将创建Listeners rules来将正确的端口转发到正确的target groups。请阅读“ Application Load Balancer components”以了解ALB的工作原理。

这是要检查的几件事

  • 确保您的应用程序负载平衡器上有两个侦听器和两个目标组
  • 负载平衡器必须位于允许来自任何地方(0.0.0.0/0)(例如SG-001)的TCP 80和TCP 1234的安全组中
  • EC2实例必须位于一个安全组中,该安全组仅允许来自源SG-001(仅是负​​载均衡器)的端口1234(对于API)和80(对于网站)上的TCP连接

写完所有这些之后,我意识到您正在使用Classic Load Balancer。这也应该可以正常工作,只需确保您的EC2实例具有正确的安全组(两个规则,每个端口一个)

enter image description here