Estoy usando Jekyll
y Vagrant
en mi mac. Descubrí que Jekyll server
se unirá a en 0.0.0.0:4000
lugar de 127.0.0.1:4000
. También gem server
se unirá a esta dirección de forma predeterminada. Todavía puedo visitarlo a través de http://localhost:port
. Pero para Jekyll
, parece que la configuración predeterminada (por ejemplo, 0.0.0.0:4000) requiere acceso a Internet. No puedo correr Jekyll server
sin Internet. ¿Es un pequeño error?
Yo también lo uso Vagrant
. He configurado el reenvío de puertos (8080 => 4000) en Vagrantfile, ya que lo instalo Jekyll
en Vagrant
una máquina virtual y lo pruebo en Macintosh. Si uso la configuración predeterminada (0.0.0.0:4000), funciona. Puedo visitarlo desde mi safari con http://localhost:8080
. Pero si no hay internet, no puedo vincularme a 0.0.0.0:4000. En su lugar, utilizo jekyll server -H 127.0.0.1
para vincular el servicio 127.0.0.1:4000
, luego no puedo visitarlo a través http://localhost:8080
.
¿Alguien puede explicar la diferencia entre 0.0.0.0, 127.0.0.1 y localhost ? ¿Y alguien puede explicar por qué la diferencia causará este problema ?
Respuestas:
127.0.0.1
es normalmente la dirección IP asignada a la interfaz de "bucle invertido" o solo local. Este es un adaptador de red "falso" que solo puede comunicarse dentro del mismo host. A menudo se usa cuando desea que una aplicación con capacidad de red solo atienda a clientes en el mismo host. Un proceso que está escuchando127.0.0.1
conexiones solo recibirá conexiones locales en ese socket."localhost" es normalmente el nombre de host para la
127.0.0.1
dirección IP. Por lo general, se establece en/etc/hosts
(o el equivalente de Windows llamado "hosts" en algún lugar debajo%WINDIR%
). Puede usarlo como cualquier otro nombre de host: intente "hacer ping localhost" para ver cómo se resuelve127.0.0.1
.0.0.0.0
tiene un par de significados diferentes, pero en este contexto, cuando se le dice a un servidor que escuche0.0.0.0
eso significa "escuchar en cada interfaz de red disponible". El adaptador de bucle invertido con dirección IP127.0.0.1
desde la perspectiva del proceso del servidor se parece a cualquier otro adaptador de red en la máquina, por lo que un servidor que debe escuchar0.0.0.0
también aceptará conexiones en esa interfaz.Espero que conteste el lado IP de su pregunta. No estoy familiarizado con Jekyll o Vagrant, pero supongo que su reenvío de puertos
8080 => 4000
está de alguna manera vinculado a un adaptador de red en particular, por lo que no está en el camino cuando se conecta localmente a127.0.0.1
fuente
ping localhost
parece que funciona en Windows , incluso sin el archivo de hosts que apunta127.0.0.1
alocalhost
.En la versión actual de Jekyll, el valor predeterminado es http://127.0.0.1:4000/ .
Esto es bueno si está conectado a una red pero no desea que nadie más acceda a su aplicación.
Sin embargo, puede suceder que desee ver cómo se ejecuta su aplicación en un dispositivo móvil o desde otra computadora portátil / computadora.
En ese caso, puedes usar
Esto vincula su aplicación al host y el siguiente uso siguiente para conectarse desde otro host
fuente