如何解决0.0.0.0、127.0.0.1 和 localhost 有什么区别?
127.0.0.1
通常是分配给“环回”或仅限本地接口的 IP
地址。这是一个“假”网络适配器,只能在同一主机内通信。当您希望支持网络的应用程序仅为同一主机上的客户端提供服务时,通常会使用它。正在侦听127.0.0.1
连接的进程将只接收该套接字上的本地连接。
“localhost”通常是127.0.0.1
IP 地址的主机名。它通常设置在/etc/hosts
(或 Windows
等效名称“hosts”下某处%WINDIR%
)。您可以像使用任何其他主机名一样使用它 - 尝试“ping
localhost”以查看它如何解析为127.0.0.1
.
0.0.0.0
有几个不同的含义,但在这种情况下,当服务器被告知要监听时,0.0.0.0
这意味着“监听每个可用的网络接口”。从服务器进程的角度来看,带有
IP 地址的环回适配器127.0.0.1
看起来就像机器上的任何其他网络适配器一样,因此被告知要监听的服务器0.0.0.0
也将接受该接口上的连接。
希望这能回答您问题的 IP 方面。我不熟悉 Jekyll 或 Vagrant,但我猜你的端口转发8080 =>
4000
以某种方式绑定到特定的网络适配器,所以当你本地连接到时它不在路径中127.0.0.1
解决方法
我在我的 Mac 上使用Jekyll
and 。Vagrant
我发现Jekyll
server
它将绑定到0.0.0.0:4000
而不是127.0.0.1:4000
. 默认gem
server
情况下也会绑定到这个地址。我仍然可以通过http://localhost:port
. 但是对于Jekyll
, 似乎默认设置(例如
0.0.0.0:4000)需要 Internet 访问。Jekyll server
没有互联网我无法运行。这是一个小错误吗?
我也用Vagrant
. 我在 Vagrantfile 中设置了端口转发(8080 =>
4000),因为我安装Jekyll
在Vagrant
虚拟机中并在 Macintosh
下测试它。如果我使用默认设置(0.0.0.0:4000),它可以工作。我可以从我的 safari
访问它http://localhost:8080
。但如果没有互联网,我无法绑定到 0.0.0.0:4000。我使用jekyll server -H
127.0.0.1
绑定服务来127.0.0.1:4000
代替,然后我无法通过http://localhost:8080
.
谁能 解释 0.0.0.0、127.0.0.1 和 localhost 之间的区别 ?谁能 解释为什么差异会导致这个问题 ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。