Używam Jekyll
i Vagrant
na moim komputerze Mac. Znalazłem, że Jekyll server
wiąże się 0.0.0.0:4000
zamiast 127.0.0.1:4000
. gem server
Domyślnie również powiąże ten adres. Nadal mogę go odwiedzić za pośrednictwem http://localhost:port
. Ale dla Jekyll
, wydaje się, że domyślne ustawienie (np 0.0.0.0:4000) wymaga dostępu do Internetu. Nie mogę uruchomić Jekyll server
bez Internetu. Czy to mały błąd?
Ja też używam Vagrant
. W Vagrantfile ustawiłem przekierowanie portów (8080 => 4000), ponieważ instaluję Jekyll
na Vagrant
maszynie wirtualnej i testuję na Macintoshu. Jeśli użyję ustawienia domyślnego (0.0.0.0:4000), to zadziała. Mogę odwiedzić to z mojego safari z http://localhost:8080
. Ale jeśli nie ma internetu, nie mogę powiązać z 0.0.0.0:4000. Zamiast tego używam jekyll server -H 127.0.0.1
do powiązania usługi 127.0.0.1:4000
, a potem nie mogę jej odwiedzić http://localhost:8080
.
Czy ktoś może wyjaśnić różnicę między 0.0.0.0, 127.0.0.1 a hostem lokalnym ? I czy ktoś może wyjaśnić, dlaczego różnica spowoduje ten problem ?
Odpowiedzi:
127.0.0.1
jest zwykle adresem IP przypisanym do „sprzężenia zwrotnego” lub interfejsu lokalnego. Jest to „fałszywa” karta sieciowa, która może komunikować się tylko na tym samym hoście. Jest często używany, gdy chcesz, aby aplikacja sieciowa mogła obsługiwać klientów tylko na tym samym hoście. Proces, który nasłuchuje127.0.0.1
połączeń, będzie odbierał tylko połączenia lokalne na tym gnieździe.„localhost” jest zwykle nazwą hosta dla
127.0.0.1
adresu IP. Zwykle jest ustawiony na/etc/hosts
(lub odpowiednik Windows nazwany gdzieś pod%WINDIR%
). Możesz go używać tak jak każdą inną nazwę hosta - spróbuj „ping localhost”, aby zobaczyć, jak to rozwiązuje127.0.0.1
.0.0.0.0
ma kilka różnych znaczeń, ale w tym kontekście, gdy serwer ma słuchać0.0.0.0
, oznacza to „słuchaj na każdym dostępnym interfejsie sieciowym”. Adapter pętli zwrotnej z adresem IP127.0.0.1
z perspektywy procesu serwera wygląda tak samo, jak każdy inny adapter sieciowy na komputerze, więc serwer, któremu polecono nasłuchiwać0.0.0.0
, zaakceptuje połączenia również na tym interfejsie.Mam nadzieję, że odpowiada to po stronie IP twojego pytania. Nie znam Jekylla ani Vagranta, ale zgaduję, że przekierowanie portów
8080 => 4000
jest w jakiś sposób powiązane z konkretną kartą sieciową, więc nie jest na ścieżce, kiedy łączysz się lokalnie z127.0.0.1
źródło
ping localhost
wydaje się działać na Windows nawet bez pliku hosts skierowaną127.0.0.1
dolocalhost
.W bieżącej wersji Jekyll domyślnie jest to http://127.0.0.1:4000/ .
Jest to dobre, jeśli masz połączenie z siecią, ale nie chcesz, aby ktokolwiek inny miał dostęp do Twojej aplikacji.
Może się jednak zdarzyć, że chcesz zobaczyć, jak aplikacja działa na telefonie komórkowym lub z innego laptopa / komputera.
W takim przypadku możesz użyć
Spowoduje to powiązanie aplikacji z hostem i następne użycie, aby połączyć się z nią z innego hosta
źródło