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

Posted

技术标签:

【中文标题】如何访问在 AWS EC2 Ubuntu 的本地主机上运行的 Parse 服务器?【英文标题】:How to access to a Parse Server running on AWS EC2 Ubuntu's localhost? 【发布时间】:2016-03-29 14:52:52 【问题描述】:

我有一个运行 Ubuntu 的 AWS EC2 实例。 我有一个 Parse 服务器,在 localhost 上运行,端口 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.

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

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

【问题讨论】:

你能用sudo netstat -plnt验证你的服务器正在监听端口1337吗? 它只显示sshdmongod,尽管它在第一个终端显示parse-server running on http://localhost:1337/parse 【参考方案1】:

公共 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,不会路由到 Internet。 AWS 应用另一层 NAT,将最终公共 IP 地址映射到您的 EC2 实例。

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

【讨论】:

我已经更新了整个问题。请看一看。【参考方案2】:

两件事

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

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

如果 ss 给出的“本地地址:端口”是 127.0.0.1,那么它只是在 localhost 上监听,无法访问

接下来,在浏览器的服务器外壳上使用hostname 给出的地址

【讨论】:

我已经更新了整个问题。请看一看。 您已经更新了问题,但答案保持不变!如果您的 Parse 服务器绑定到地址 127.0.0.1 那么它是一个 localhost 地址。从 同一服务器 上的外壳,它应该可以工作。从其他地方它不会。根据 Parse 的文档,它应该默认绑定到 0.0.0.0 问题是无法连接 它无法连接,因为您无法从服务器外部连接到地址 localhost【参考方案3】:

我通过使用 EC2 实例的公共 IP 解决了这个问题,并且我能够访问在其上运行的 Parse 服务器。

【讨论】:

以上是关于如何访问在 AWS EC2 Ubuntu 的本地主机上运行的 Parse 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

从本地机器上的 ubuntu (AWS EC2) 读取文件?

在 AWS Ubuntu EC2 上部署 Django 时缺少模块

无法从本地主机访问 AWS EC2 服务器(卷曲超时)

连接AWS EC2 Linux instance Ubuntu远程桌面

无法从我的本地 ubuntu 机器推送到 aws ec2

从终端访问 AWS EC2 服务器时如何查看 phpmyadmin GUI?