所有 IP、Id 等均来自测试环境并将被删除,因此请注意,它们来自实际生产环境。

我有一个 EC2 安全组,并且为传入流量打开了四个端口:

我有一个使用此安全组的 EC2 实例。我创建了一个 Docker 容器并在端口 8001 上运行它:

docker run -dit --restart unless-stopped -p 8001:8001 --name tce-docker_container tce-docker

当我尝试通过浏览器的 8001 端口访问我的服务器()时,连接被拒绝。

我去了一个开放端口检查器(),得到了以下结果:

事实上,尽管我已经打开了端口 443 和 8001,但只有端口 80 和 22 被视为开放。

我可以在浏览器中正常访问我的 EC2 实例上的默认端口 80,并且也可以通过 ssh 进入我的实例,证明端口 80 和 22 是开放的。

为什么我的端口 443 和 8001 没有打开?我还可以在 AWS 中检查什么来打开这些端口(或任何其他端口)?

谢谢

2

  • 实例上是否有正在运行的进程实际正在侦听该端口?您的 httpd 是否配置为侦听端口 443?


    – 


  • 建议您先设置 Nginx 并进行测试,这很简单,然后您就可以使用 docker 继续前进了。确保您可以从实例的 80 端口 curl Nginx,然后从 AWS 外部尝试。如果一个可以工作,而另一个不工作,这将为您提供更多诊断信息。请尝试此操作并报告结果。


    – 


最佳答案
1

您的 EC2 实例本身上的防火墙或安全规则可能阻止了您的流量。您可以尝试检查实例上的 iptables 或其他防火墙是否处于活动状态,因为尽管 EC2 安全组中有设置,但这些防火墙可能会限制访问,因此请根据需要修改或禁用防火墙规则。如果您确信 EC2 安全组提供了足够的保护,您可以考虑禁用 iptables(如果它已经处于活动状态)以防止冲突

1

  • 不太可能。防火墙会导致超时,连接被拒绝表示没有任何内容在监听给定的端口。


    –