如何访问 AWS EC2 Ubuntu 的本地主机上的解析服务器 运行?

How to access to a Parse Server running on AWS EC2 Ubuntu's localhost?

我有一个 AWS EC2 实例 运行 Ubuntu。
我有一个 Parse 服务器,运行 在本地主机上,端口 1337。我在实例的安全组中启用了该端口。

我尝试检查是否以及如何使用wget命令访问实例的localhost并检查是否存在连接或连接被拒绝,这些是结果:

$ wget http://<Public IP>:1337/parse
Connecting to <Public IP>:1337... failed: Connection refused.
$ wget http://<Private IP>:1337/parse
Connecting to <Private IP>:1337... failed: Connection refused.
$ wget http://localhost:1337/parse
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:1337... failed: Connection refused.
$ wget http://<Public DNS>:1337/parse
Resolving <Public DNS> (<Public DNS>)... <Private IP>
Connecting to <Public DNS> (<Public DNS>)|<Private IP>|:1337... failed: Connection refused.

正如您在上面看到的,我检查了 Public IP、Public DNS 和私有 IP。
它总是说它失败是因为 connection refused,并且由于某种原因,甚至 localhost 也被服务器拒绝。

如何使 localhost 可以从其内部网络外部访问并访问 Parse 服务器?

两件事

首先,您不用说 运行 是什么服务器,而是对其进行更改,使其监听所有地址。通常这是通过将 0.0.0.0 作为绑定地址来完成的。执行此操作并重新启动服务器进程后,使用服务器上 shell 中的 ss 命令检查:

$ ss -nl|grep 8082
LISTEN     0      100                      :::4040                    :::*     

如果 ss 给出的 "Local Address:Port" 是 127.0.0.1 则它仅在本地主机上侦听并且不可访问

接下来,在您的浏览器中使用 hostname 在服务器 shell 上给出的地址

public IP 地址通常不会与外部接口在本地使用的私有 IP 地址相同。要查看私有 IP 地址,您可以 运行:

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    link/ether 0a:8c:dd:df:8d:ff brd ff:ff:ff:ff:ff:ff
    inet 172.19.240.213/24 brd 172.19.240.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::88c:ddff:fedf:8cff/64 scope link
       valid_lft forever preferred_lft forever

这显示了您的接口:lo,本地主机环回,是 127.0.0.1。 eth0,对外接口,是172.19.240.213。请注意,它是 172.16.0.0/12 块中的私有 IP,不会路由到互联网。 AWS 应用另一层 NAT,将最终 public IP 地址映射到您的 EC2 实例。

一般来说,您应该遵循 Vorsp运行g 的建议,简单地绑定到 0.0.0.0。如果想直接绑定eth0,可以这样查找地址

我使用 EC2 实例的 public IP 解决了这个问题,并且我能够访问它上面的 Parse 服务器 运行。