我有一个 AWS 实例,人们正在通过端口 443(一个 Web 应用程序)使用它。 它突然停止接受连接。像往常一样,我通过 SSH 登录来检查我的服务。所有这些都按预期运行。 Nginx 和一些 Node.js 进程。使用本地主机 IP 我可以连接到它们。
但是,从外部只能访问 SSH 端口。端口 443 不接受连接。像往常一样,我检查了安全组,它可以从任何地方进行 443 访问。为了检查我的机器是否可以通过互联网访问(已通过 SSH 访问确认),我在 SG 中打开了端口 90,并在同一端口上运行了一个小型 Node.js 服务器。从外部,我可以通过端口 90 连接到该服务器(通过 telnet 和 curl)。
我爬上去并了解到 NACL 可以凌驾于 SG 规则之上。我查了一下,发现了 4 条规则。
为了确认其有效性,我从 NACL 中删除了“接受所有流量”。这次,正如预期的那样,即使 SG 允许,我也无法连接到端口 90。由此我确认 NACL 有效。但是,仍然没有回答为什么端口 80 和 443 无法访问。我恢复了“允许所有流量”规则。
为了确认问题是否不在实例中(这样我就不必调查实例上运行的任何内容),我在同一 VPC 和子网中启动了另一个实例。这次,我创造了另一个SG。这里也再次出现同样的行为。端口 22 和 90 可访问。但是,不是端口 80 和 443。
我检查了我的 VPC 的 IGW。它已连接并正在工作。此外,当出现此问题时,系统已运行(可从公共访问)多个小时/天,而没有在 AWS 级别进行任何配置更改。
自上周以来我第二次面临这个问题。上次,我尝试创建实例的映像,创建一个新的 SG,问题就消失了。这次尝试了同样的方法,问题仍然存在。
有人遇到过这个问题吗?有什么指点吗?
谢谢!
事实证明,AWS 由于报告而标记了该账户。我只是把这个答案留在这里,这样如果其他人面临同样的情况,就不必像我一样花费这么多时间。