我在我的 Mac 上使用Jekylland 。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没有互联网我无法运行。这是一个小错误吗?
Jekyll
Vagrant
Jekyll server
0.0.0.0:4000
127.0.0.1:4000
gem server
http://localhost:port
我也用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.
http://localhost:8080
jekyll server -H 127.0.0.1
谁能 解释 0.0.0.0、127.0.0.1 和 localhost 之间的区别 ?谁能 解释为什么差异会导致这个问题 ?
127.0.0.1通常是分配给“环回”或仅限本地接口的 IP 地址。这是一个“假”网络适配器,只能在同一主机内通信。当您希望支持网络的应用程序仅为同一主机上的客户端提供服务时,通常会使用它。正在侦听127.0.0.1连接的进程将只接收该套接字上的本地连接。
127.0.0.1
“localhost”通常是127.0.0.1IP 地址的主机名。它通常设置在/etc/hosts(或 Windows 等效名称“hosts”下某处%WINDIR%)。您可以像使用任何其他主机名一样使用它 - 尝试“ping localhost”以查看它如何解析为127.0.0.1.
/etc/hosts
%WINDIR%
0.0.0.0有几个不同的含义,但在这种情况下,当服务器被告知要监听时,0.0.0.0这意味着“监听每个可用的网络接口”。从服务器进程的角度来看,带有 IP 地址的环回适配器127.0.0.1看起来就像机器上的任何其他网络适配器一样,因此被告知要监听的服务器0.0.0.0也将接受该接口上的连接。
0.0.0.0
希望这能回答您问题的 IP 方面。我不熟悉 Jekyll 或 Vagrant,但我猜你的端口转发8080 => 4000以某种方式绑定到特定的网络适配器,所以当你本地连接到时它不在路径中127.0.0.1
8080 => 4000