在 amazon ec2 的 80 端口上服务节点 Webapp

Serve node Webapp on port 80 in amazon ec2

我有一个侦听端口 80 的节点应用程序,我已将安全组设置为在端口 80 上打开。

但是,当我通过 public ip(http://xx.xxx.xx.xxx/) 在浏览器中访问我的 webapp 时,它没有显示。

可能是什么问题?

我已将此文档用作指南https://aws.amazon.com/premiumsupport/knowledge-center/connect-http-https-ec2/

当您的安全组已经允许流量时这意味着实例有问题。

调试此类问题的第一步是验证实例内部的应用程序状态。

  • 对实例执行 ssh 并验证实例是否在本地主机上响应 curl localhost
  • 检查是进程运行,如果你使用任何nodejs进程管理器,如pm2 pm2 list或永远forever listps -aux | grep node
  • 验证端口 80 上的服务器 运行。
  • 查看是否占用了端口netstat -antu | grep LISTEN

简而言之,如果应用程序使用 curl localhost 在本地主机上响应,那么如评论中所述,实例位于私有子网中。

您可以查看此 article 以了解 public 和私有子网。

所以答案是,我的安全组很好。我的应用不是 运行 因为我没有正确设置环境变量。 sudo PORT=80 node server.js 是我需要的命令。