Ich benutze Jekyll
und Vagrant
auf meinem Mac. Ich habe festgestellt, dass Jekyll server
das an binden wird, 0.0.0.0:4000
anstatt 127.0.0.1:4000
. Wird gem server
auch standardmäßig an diese Adresse gebunden. Ich kann es immer noch über besuchen http://localhost:port
. Aber Jekyll
, so scheint es , dass die Standardeinstellung (zB 0.0.0.0:4000) einen Internetzugang erforderlich. Ich kann nicht Jekyll server
ohne Internet laufen . Ist es ein kleiner Fehler?
Ich benutze auch Vagrant
. Ich habe die Portweiterleitung (8080 => 4000) in Vagrantfile festgelegt, da ich sie Jekyll
in einer Vagrant
virtuellen Maschine installiere und unter Macintosh teste . Wenn ich die Standardeinstellung (0.0.0.0:4000) verwende, funktioniert es. Ich kann es von meiner Safari mit besuchen http://localhost:8080
. Aber wenn es kein Internet gibt, kann ich mich nicht an 0.0.0.0:4000 binden. Ich jekyll server -H 127.0.0.1
binde 127.0.0.1:4000
stattdessen, um den Dienst zu binden , dann kann ich ihn nicht über besuchen http://localhost:8080
.
Kann jemand den Unterschied zwischen 0.0.0.0, 127.0.0.1 und localhost erklären ? Und kann jemand erklären, warum der Unterschied dieses Problem verursacht ?
Antworten:
127.0.0.1
ist normalerweise die IP-Adresse, die der "Loopback" - oder Nur-Lokal-Schnittstelle zugewiesen ist. Dies ist ein "gefälschter" Netzwerkadapter, der nur innerhalb desselben Hosts kommunizieren kann. Es wird häufig verwendet, wenn eine netzwerkfähige Anwendung nur Clients auf demselben Host bedienen soll. Ein Prozess, der auf127.0.0.1
Verbindungen wartet, empfängt nur lokale Verbindungen an diesem Socket."localhost" ist normalerweise der Hostname für die
127.0.0.1
IP-Adresse. Es ist normalerweise in/etc/hosts
(oder dem Windows-Äquivalent mit dem Namen "Hosts" irgendwo darunter%WINDIR%
) eingestellt. Sie können es wie jeden anderen Hostnamen verwenden - versuchen Sie "ping localhost", um zu sehen, wie es aufgelöst wird127.0.0.1
.0.0.0.0
hat verschiedene Bedeutungen, aber wenn in diesem Zusammenhang ein Server angewiesen wird, abzuhören0.0.0.0
, bedeutet dies "jede verfügbare Netzwerkschnittstelle abhören". Der Loopback-Adapter mit IP-Adresse127.0.0.1
aus Sicht des Serverprozesses sieht genauso aus wie jeder andere Netzwerkadapter auf dem Computer, sodass ein Server, der zum Abhören aufgefordert0.0.0.0
wird, auch Verbindungen auf dieser Schnittstelle akzeptiert.Das beantwortet hoffentlich die IP-Seite Ihrer Frage. Ich bin nicht mit Jekyll oder Vagrant vertraut, aber ich vermute, dass Ihre Portweiterleitung
8080 => 4000
irgendwie an einen bestimmten Netzwerkadapter gebunden ist, sodass sie nicht im Pfad enthalten ist, wenn Sie eine lokale Verbindung herstellen127.0.0.1
quelle
ping localhost
scheint zu funktionieren unter Windows auch ohne die Host - Datei zeigt127.0.0.1
auflocalhost
.In der aktuellen Version von Jekyll wird standardmäßig http://127.0.0.1:4000/ verwendet .
Dies ist gut, wenn Sie mit einem Netzwerk verbunden sind, aber nicht möchten, dass andere Personen auf Ihre Anwendung zugreifen.
Es kann jedoch vorkommen, dass Sie sehen möchten, wie Ihre Anwendung auf einem Mobiltelefon oder einem anderen Laptop / Computer ausgeführt wird.
In diesem Fall können Sie verwenden
Dadurch wird Ihre Anwendung an den Host gebunden und anschließend von einem anderen Host aus eine Verbindung hergestellt
quelle