我使用的Jekyll
和Vagrant
在我的Mac。 我发现, 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
没有互联网。 它是一个小bug?
我也用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区别 ? 而且任何人都可以解释为什么差别会造成这个问题 ?
127.0.0.1
是通常分配给“环回”或仅本地接口的IP地址。 这是一个“假”网络适配器只能在同一主机内通信。 当你想要一个网络功能的应用程序只用于在同一台主机上的客户端它经常使用。 那是在听一个过程127.0.0.1
的连接将收到的只是套接字上本地连接。
“本地主机”,通常是为主机名127.0.0.1
IP地址。 它通常设置在/etc/hosts
(或Windows等价命名为“主机”下的某处%WINDIR%
你可以使用它就像任何其他的主机-尝试“平本地主机”,看看它是如何解析为127.0.0.1
。
0.0.0.0
有几个不同的含义,但在这种情况下,当服务器被告知侦听0.0.0.0
,意思是“每一个可用的网络接口上听”。 与IP地址的回送适配器127.0.0.1
从服务器进程的角度看上去就像机器上的任何其他网络适配器,所以服务器告知要听0.0.0.0
将接受该接口上连接了。
有希望回答你的问题的IP侧。 我不熟悉的化身或无业游民,但我猜你的端口转发8080 => 4000
以某种方式绑定到特定的网络适配器,所以当你在本地连接到它是不是在路径127.0.0.1
在哲基尔的当前版本,则默认为http://127.0.0.1:4000/ 。
这是好事,如果你连接到网络,但不希望其他人访问你的应用程序。
然而,它可能发生,你想看到你的应用程序在移动或从其他笔记本/电脑的运行方式。
在这种情况下,你可以使用
jekyll serve --host 0.0.0.0
这结合您的应用程序主机和备下次使用下面从一些其他的主机连接到它
http://host's IP adress/4000