Я использую 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) требуется доступ в Интернет. Я не могу работать Jekyll server
без Интернета. Это небольшая ошибка?
Я тоже пользуюсь Vagrant
. Я установил переадресацию портов (8080 => 4000) в Vagrantfile, так как я устанавливаю 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 ? И кто-нибудь может объяснить, почему разница вызовет эту проблему ?
Ответы:
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
это означает «прослушивать каждый доступный сетевой интерфейс». Адаптер обратной связи с IP-адресом127.0.0.1
с точки зрения серверного процесса выглядит так же, как и любой другой сетевой адаптер на машине, поэтому сервер,0.0.0.0
которому необходимо прослушивать, также будет принимать соединения через этот интерфейс.Надеюсь, это ответит на ваш вопрос по поводу IP. Я не знаком с Jekyll или Vagrant, но я предполагаю, что переадресация портов
8080 => 4000
каким-то образом связана с конкретным сетевым адаптером, поэтому при локальном подключении к127.0.0.1
источник
ping localhost
кажется, работает на Windows , даже без хозяев файла , указывающей127.0.0.1
наlocalhost
.В текущей версии Jekyll по умолчанию используется http://127.0.0.1:4000/ .
Это хорошо, если вы подключены к сети, но не хотите, чтобы кто-либо другой имел доступ к вашему приложению.
Однако может случиться так, что вы захотите увидеть, как ваше приложение работает на мобильном телефоне или на другом ноутбуке / компьютере.
В этом случае вы можете использовать
Это привязывает ваше приложение к хосту и последующему использованию для подключения к нему с другого хоста
источник