Jaka jest różnica między 0.0.0.0, 127.0.0.1 i localhost?
Używam Jekyll
i Vagrant
na moim Macu. Okazało się, że {[2] } będzie wiązać się z 0.0.0.0:4000
zamiast 127.0.0.1:4000
. Również gem server
będzie domyślnie wiązać ten adres. Nadal mogę go odwiedzić przez http://localhost:port
. Ale dla Jekyll
, wydaje się, że ustawienie domyślne (np. 0.0.0.0:4000) wymaga dostępu do Internetu. Nie mogę uruchomić Jekyll server
bez Internetu. czy to mały robak?
Używam również Vagrant
. Ustawiłem przekierowanie portów (8080 => 4000) W Vagrantfile, ponieważ zainstalowałem Jekyll
w Vagrant
virtual machine i Przetestowałem go pod Macintosh. Jeśli używam domyślnego ustawienia (0.0.0.0: 4000), to działa. Mogę go odwiedzić z mojego safari z http://localhost:8080
. Ale jeśli nie ma internetu, nie mogę związać się z 0.0.0.0: 4000. Używam jekyll server -H 127.0.0.1
, aby powiązać usługę z 127.0.0.1:4000
, a następnie nie mogę jej odwiedzić przez http://localhost:8080
.
Czy ktoś może wyjaśnić różnicę między 0.0.0.0, 127.0.0.1 i localhost ? A czy ktoś może wyjaśnić, dlaczego różnica spowoduje ten problem?
2 answers
127.0.0.1
jest zwykle adres IP przypisany do interfejsu" loopback " lub tylko lokalnego. Jest to "fałszywa" Karta sieciowa, która może komunikować się tylko w ramach tego samego hosta. Jest często używany, gdy chcesz, aby aplikacja obsługująca sieć obsługiwała tylko klientów na tym samym hoście. Proces, który nasłuchuje 127.0.0.1
dla połączeń, odbierze tylko połączenia lokalne na tym gnieździe.
"localhost" jest zwykle nazwą hosta dla adresu IP 127.0.0.1
. Zazwyczaj ustawia się w /etc/hosts
(lub Odpowiednikiem Windows o nazwie "hosts" gdzieś pod %WINDIR%
). Możesz użyć go tak jak każdej innej nazwy hosta - spróbuj "ping localhost", aby zobaczyć, jak rozwiązuje się 127.0.0.1
.
0.0.0.0
ma kilka różnych znaczeń, ale w tym kontekście, gdy serwer ma słuchać na 0.0.0.0
, oznacza to "słuchać na każdym dostępnym interfejsie sieciowym". Adapter loopback z adresem IP 127.0.0.1
z punktu widzenia procesu serwera wygląda jak każda inna karta sieciowa na komputerze, więc serwer polecił listen on 0.0.0.0
również akceptuje połączenia w tym interfejsie.
To mam nadzieję, że odpowie na stronę IP Twojego pytania. Nie znam Jekylla ani Vagranta, ale domyślam się, że przekierowanie portów 8080 => 4000
jest w jakiś sposób powiązane z konkretną kartą sieciową, więc nie jest w ścieżce, gdy łączysz się lokalnie z 127.0.0.1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-08 15:29:27
W aktualnej wersji Jekyll, domyślnie http://127.0.0.1:4000/.
Jest to dobre, jeśli jesteś podłączony do sieci, ale nie chcesz, aby ktokolwiek inny miał dostęp do Twojej aplikacji.
Może się jednak zdarzyć, że chcesz zobaczyć, jak działa Twoja aplikacja na telefonie komórkowym lub innym laptopie / komputerze.
W takim przypadku możesz użyć
jekyll serve --host 0.0.0.0
To wiąże Twoją aplikację z hostem i następnie użyj następującej opcji, aby połączyć się z nim z innego hosta
http://host's IP adress/4000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-12 07:22:11