【问题标题】:Can't access port 8080 on AWS EC2无法访问 AWS EC2 上的端口 8080
【发布时间】:2019-04-07 18:41:15
【问题描述】:

我刚刚启动了一个新的 AWS EC2 实例。在实例的安全组中,我添加了一个新规则来打开端口 8080 以及端口 80。

我根据 aws tutorial 创建了一个运行 apache 服务器的 docker 映像和容器。

当我运行 docker run -p 80:80 hello-world(其中 hello-world 是 apache 容器映像)时,一切正常,我可以从公共网络访问服务器(使用 Web 浏览器或 curl 命令)。

但是,当我运行 docker run -p 8080:80 hello-world 并尝试发送 GET 请求(Web 浏览器或 curl)时,我遇到了连接超时。

如果我登录到运行 docker 容器的主机,curl 命令可以正常工作。这告诉我 8080 端口并没有真正对公共网络开放,并且有东西阻塞了它,那会是什么?

【问题讨论】:

  • 你能发布 eact 图像吗?所以我会从我的尽头尝试。它必须按照你的解释工作。
  • 谢谢金娜!图片在教程链接中。我没有把它放进去,所以我不会使帖子复杂化。
  • 我已经完成了教程,你尝试过的完美工作。在端口 8080 上运行应用程序后,您的 curl 命令是什么?尝试使用 IP:8080
  • 是的,就是这样,我也知道它可以工作,因为结果是“超时,而...在端口 8080 上”
  • 会不会是我使用的机器?我选择了一个特定的实例(免费层),也许它的配置阻止了 8080。我检查了 iptables,那里什么也没有,我还检查了防火墙,它被禁用了。

标签: amazon-web-services docker amazon-ec2


【解决方案1】:

我试图重现这件事,但我无法做到(它对我有用),所以你应该检查的事情:

1) 检查安全组是否确实打开了端口 80 和 8080 到您的 ip(或 0.0.0.0/0,如果这只是为了确认这不是防火墙问题的测试)。

2) 检查容器是否运行:

docker ps -a

你应该看到:0.0.0.0:8080->80/tcp 在端口下。

3) 检查您在发送 GET 请求时是否在请求中指定了端口 8080,因此您的浏览器应如下所示:

http://your.ip:8080

或卷曲:

curl http://your.ip:8080

【讨论】:

    【解决方案2】:

    警告:仅用于测试
    用于测试:设置安全组可以解决问题。

    SecurityGroups > 入站 > 编辑入站规则 > 添加新规则 > 所有 TCP

    【讨论】:

    • 这应该仅用于测试目的,因为这是一种糟糕的做法。在这里,您正在打开所有端口,此框的所有 ips。这是在为这么多可能的攻击向量而尖叫
    • 是的,我同意@SimonErnestoCardenasZarate。
    猜你喜欢
    • 2013-04-08
    • 2020-02-02
    • 2014-03-31
    • 2019-02-08
    • 1970-01-01
    • 2020-08-05
    • 2017-02-18
    • 2016-05-18
    • 2017-05-05
    相关资源
    最近更新 更多