如何访问在 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吗?
它只显示sshd
和mongod
,尽管它在第一个终端显示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 时缺少模块