如何访问 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 服务器 运行。
我有一个 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 服务器 运行。