EC2 端口 80 拒绝连接公共 IP,但可以使用私有 IP 连接

EC2 端口 80 拒绝连接公共 IP,但可以使用私有 IP 连接

问题简化

我可以这样做curl {publicip}:4321,但不能curl {publicip}:80curl {publicip}但从服务器的 ssh,我可以运行curl {privateip}:80curl localhost:80没有任何问题。此外,端口 80 和端口 4321 都已添加到安全组中的入站规则。为什么会这样?

故事

我是 AWS EC2 的新手。我最近创建了一个 EC2 t4g nano 实例,并使用 PM2 运行了一个 NodeJS 服务器。该服务器监听端口 4321。然后使用 iptables,我将端口 80 重定向到端口 4321。然后在安全组中,我添加了从“任意 IP”到端口 80(HTTP)的入站规则。

一切正常,我能够使用实例的公共 IP 连接到服务器,直到今天早上,我突然无法通过 SSH 连接到服务器。AWS 控制台中的实例状态显示为“正在运行”,但在状态检查中,1/2 未成功。它显示“实例可达性失败”。然后,我尝试重新启动实例,它成功了,然后我可以通过 SSH 连接到它。

现在,我重新启动了 PM2,然后再次将重定向规则添加到 iptables。但是现在,我无法使用公网 IP 连接到端口 80。

我可以运行curl localhost:80curl {privateip}:80它连接没有任何问题。当我运行curl {publicip}:80或 时,curl {publicip}它显示“连接被拒绝”。正如我所说,端口 80 已经存在于安全组的入站规则

我将端口 4321 添加到安全组的入站规则中,使用 可以毫无问题地进行连接,curl {publicip}:4321但不能curl ${publicip}:80。这怎么可能?我遗漏了什么吗?

相关内容