为什么我无法在 AWS EC2 实例中连接到 Ubuntu 上的 jetty web 服务器

为什么我无法在 AWS EC2 实例中连接到 Ubuntu 上的 jetty web 服务器

无法从我的网络浏览器连接到在 Amazon Webservices EC2 中的 Ubuntu Linux SMP 上运行的 Jetty 服务器。

我可以使用 localhost 进行连接,同时从机器本身登录

IEcurl http://localhost:8080/?type=release\&query=reid:1

作品

因为这是一个 Amazon EC2 实例,它既有私有 IP,也有公共 IP,当我启动 jetty 时,它说

 * Starting Jetty servlet engine, jetty8                                              
 * Jetty servlet engine started, reachable on http://ip-172-31-16-219:8080/. jetty8 

但是 ip-172-31-16-219 与我的私有地址有关,而不是我的公共地址,但是从计算机本身使用私有 ipaddress 的 dns 仍然失败

curl http://ip-172-31-16-219.eu-west-1.compute.internal:8080/?type=release\&query=reid:1

我读到过问题可能是 iptables 防火墙,但是 iptables 在这个实例上不是一个已知命令(可能 ubuntu 没有使用)

为了测试目的,我已配置了 Amazon 安全组,以允许完全入站和出站

我还需要做什么?

答案1

我怀疑您想使用服务器的“公共 IP”和/或“公共 DNS”,而不是“私有 IP”或“私有 DNS”。您可以在 EC2 仪表板上实例的“描述”选项卡中看到所有这些。

私有 DNScompute.internal域名仅在您使用 Amazon 提供的 DNS 时才有意义。不过,我不知道您特别想要它的理由是什么。

更多信息:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html

答案2

它看起来像是根据您的主机名给出的输出,因此请检查 /etc/hostname 中的内容,如果有误,请将其更改为更合适的内容。

但是,实际上不需要主机名来连接,您只需连接到您在指定端口上为实例提供的公共 IP 地址(在本例中为 8080)即可

还要确保 Amazon EC2 控制台中的防火墙规则正确并且允许来自外界的 8080。

相关内容