我有一个运行Ubuntu的AWS EC2实例。
我在上面有一个Parse服务器,运行在本地主机上,端口1337。我在实例的安全组中启用了该端口。
我试图检查是否以及如何使用localhost命令访问实例的wget,并检查是否存在连接或连接是否已被拒绝,结果如下:
$ 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可以从它的内部网络之外访问并访问解析服务器?
发布于 2016-04-05 19:57:55
我通过使用EC2实例的公共IP来解决这个问题,我能够访问运行在它上的Parse服务器。
发布于 2016-03-29 15:44:04
公共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,可以这样查找地址。
发布于 2016-03-29 15:23:04
两件事
首先,您不需要说明正在运行的服务器,而是更改它,以便它侦听所有的地址。这通常是通过将0.0.0.0作为绑定地址来完成的。完成此操作并重新启动服务器进程后,请从服务器上的shell中使用ss命令检查:
$ ss -nl|grep 8082
LISTEN 0 100 :::4040 :::* 如果ss给出的“本地地址:端口”为127.0.0.1,那么它只在本地主机上侦听,无法访问
接下来,在浏览器的服务器外壳上使用hostname给出的地址
https://stackoverflow.com/questions/36287799
复制相似问题