从公共网络访问运行在AWS-EC2上的Node.js应用程序

3

已启用 EC2 安全组入站到 所有流量,但仍无法从公共WAN访问在EC2上运行的NodeJs服务器,但在 EC2 中使用 'curl' 命令可以正常工作。

  1. 创建并登录到 EC2 实例
  2. 安装 NodeJs 并编写了简单的服务器代码,并将其绑定到以下端口
    host/port #
    const ip = "localhost";
    const port = 6999;
  1. 运行服务器并使用curl http://localhost:6999 进行测试正常。
  2. EC2安全组,入站流量开放到所有流量,所有端口等。
  3. 尝试使用公共 DNS URLIP 访问服务器时,无法连接。

非常感谢您的任何帮助。


你在EC2中使用哪个服务来托管你的Node.js应用? - Jeba Prince
如果您尝试使用主机的公共IP进行curl操作会发生什么? - Michał Karpacki
@KalidasVelmuruganSermakasi,你的 IP 地址确定是公共的吗?正如 Jeba Prince 所提到的,可能有一些阻止入站流量和允许内部请求的规则。你检查过你的 iptables 配置了吗? - Michał Karpacki
@JebaPrince - 它是亚马逊 Linux AMI,实例类型为 t2.micro。为了测试目的,创建了一个新的安全组,入站设置为“所有流量”、“所有端口”。 - Kalidas Velmurugan Sermakasi
1
最终找到了问题所在,在Node.js代码中,我尝试使用“0.0.0.0”而不是“127.0.0.1”作为服务器IP,它起作用了。非常感谢@MichałKapracki和#jeba提供的可能解决方案的指导。 - Kalidas Velmurugan Sermakasi
显示剩余9条评论
1个回答

1
经过评论讨论后发现您没有监听正确的接口。因此,为了使您的node服务器对外可见,您需要检查以下内容:
  1. 您的安全组是否允许在该特定端口上输入(我不建议使用all traffic),而是最好允许HTTP或您选择的端口。
  2. 检查防火墙是否开启,如果开启,请记得在INPUT链上打开入站端口。
  3. 确保您的应用程序侦听外部接口。这意味着,不要像在.listen()中使用127.0.0.1,而是传递"0.0.0.0" - 这将使您的服务器在服务器上的所有接口上都可用。

非常感谢@MichalKapracki提供的最佳实践建议。确实很有帮助! - Kalidas Velmurugan Sermakasi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接