我使用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
没有互联网,我无法运行.这是一个小虫子吗?
我也用Vagrant
.我在Vagrantfile中设置了端口转发(8080 => 4000),因为我Jekyll
在Vagrant
虚拟机中安装并在Macintosh下测试它.如果我使用默认设置(0.0.0.0:4000),它可以工作.我可以从我的野生动物园参观它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之间的区别?任何人都可以解释为什么差异会导致这个问题?
在当前版本的Jekyll中,默认为http://127.0.0.1:4000/.
如果您连接到网络但不希望其他任何人访问您的应用程序,这很好.
但是,您可能希望了解应用程序在移动设备或其他笔记本电脑/计算机上的运行方式.
在这种情况下,您可以使用
jekyll serve --host 0.0.0.0
这会将您的应用程序绑定到主机并在下一次使用后从其他主机连接到它
http://host's IP adress/4000
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
,意味着"监听每个可用的网络接口".127.0.0.1
从服务器进程的角度看,具有IP地址的环回适配器看起来就像机器上的任何其他网络适配器一样,因此被告知要监听的服务器0.0.0.0
也将接受该接口上的连接.
希望能回答你问题的知识产权方面.我不熟悉Jekyll或Vagrant,但我猜你的端口转发8080 => 4000
以某种方式绑定到特定的网络适配器,所以它在本地连接时不在路径中127.0.0.1