首页 > 解决方案 > 为什么我在 aws 上托管的网站拒绝连接?

问题描述

我有一个在本地主机上完美运行的节点应用程序,我将它托管在端口 80 上的 AWS ec2 实例上,并且在我搜索我的 ec2 实例的公共 IP 地址(在任何浏览器上)7 天不活动后,它也运行良好,它说<public_ipv4> 拒绝连接。

以下是我从 AWS 论坛阅读但没有得到任何运气的故障排除方法:

  1. 删除 node_modules/ 目录并使用 npm install 命令重新安装

  2. 已在该实例的安全组的入站规则内正确允许端口 80 上的 HTTP 流量(我只有一个实例在运行)

  3. 跑 netstat -nplt | grep 80 ,它给了我输出:

    tcp6 0 0 :::80 :::* 听

  4. 我在 package.json 文件中添加了一个脚本,app.js 文件将通过该脚本运行

在我的 app.js 文件中,我正在监听端口 80:

app.listen(80, async  function(){
  console.log("server has started");
})

我还缺少什么?

入站规则截图:在此处输入图像描述

标签: node.jsamazon-web-servicesamazon-ec2

解决方案


看来您只允许安全组的入站流量使用 IP v6 地址。

未添加允许 IPv4 地址的权限..

添加以下规则

HTTP tcp 0.0.0.0/0  80

如果您同时添加了规则(IPV4 和 IPV6),那么

sudo netstat -tnlp | grep :80  

应该显示在两条线下面..

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN 
tcp6       0      0 :::80                   :::*                    LISTEN  

但在你的情况下它只显示 tcp6


推荐阅读