Почему Ruby on Rails использует http://0.0.0.0:3000 вместо http://localhost:3000?

Я новичок в Ruby on Rails, поэтому, когда я попытался следовать официальному руководству Начало работы по ruby ​​on rails, я был немного разочарован, потому что очень быстро что-то пошло не так. В основном было сказано:

… перейдите по адресу http://localhost:3000. Вы должны увидеть информационную страницу Rails по умолчанию.

Но когда я следую инструкциям, я получаю

=> Rails 2.3.4 application starting on http://0.0.0.0:3000

Попробовав оба адреса, я знаю, что они указывают на одно и то же, но может ли кто-нибудь объяснить мне, почему Ruby on Rails использует http://0.0.0.0:3000 вместо http://localhost:3000?

Есть ли способ, чтобы сервер WEBrick всегда использовал локальный хост?


person Lou    schedule 25.09.2009    source источник


Ответы (8)


Localhost буквально означает «ваш локальный хост», обычно идентифицируемый 127.0.0.1, и весь трафик на этот адрес направляется через петлевой интерфейс. Если ваш веб-сервер прослушивает соединения на 127.0.0.1, это означает, что он принимает запросы, поступающие только с одного и того же хоста.

0.0.0.0 означает, что Rails прослушивает все интерфейсы, а не только петлевой интерфейс.

person andri    schedule 25.09.2009
comment
Чтобы настроить WEBrick для прослушивания только на локальном хосте, что означает, что внешние подключения игнорируются: script/server --binding=127.0.0.1 - person tadman; 26.09.2009
comment
К вашему сведению, указание привязки к 127.0.0.1 при загрузке WEBrick для меня сделало мое локальное подключение к рельсам (и, следовательно, внешние веб-подключения) намного быстрее. Поэтому, если ваше локальное соединение медленное, я рекомендую то, что предложил @tadman. В Rails 3 это rails server --binding=127.0.0.1. - person Steph Rose; 25.10.2011

0.0.0.0 означает все интерфейсы. Включая 127.0.0.1, также известного как localhost.

person Michael Krelin - hacker    schedule 25.09.2009

Просто чтобы все знали, мой браузер Firefox правильно отображает локально размещенный сервер, если я получаю доступ к http://localhost:3000/, но он НЕ отображается, когда я пытаюсь получить доступ к http://0.0.0.0:3000/, как это рекомендовано Ruby. Ясно, что в каком-то смысле они не эквивалентны.

Я на Windows кстати.

person John Vandivier    schedule 22.10.2014
comment
0.0.0.0 — это не тот IP-адрес, к которому вы можете получить доступ с помощью клиента. Это просто ярлык для вызова системной привязки для использования всех доступных IP-адресов. - person Tobias J; 10.12.2014

Если вы хотите localhost, одним из быстрых способов является указать привязку rails s -blocalhost (и порт с помощью -pNNNN, дополнительные параметры с помощью rails s --help).

Мой сервер начал работать по умолчанию localhost по причинам, которые необходимо выяснить. В результате lvh.me перестал работать, не позволяя мне указывать поддомены (например: www.lvh.me:3000).

Я «решил» это, указав привязку:

rails s -b0.0.0.0 # will work with lvh.me
person ecoologic    schedule 19.07.2016
comment
Причина, по которой привязка localhost не позволяла работать lvh.me, заключалась в проблеме Puma № 782, которая теперь исправлена. Подробнее здесь. - person tanius; 08.12.2018

Предупреждающее сообщение Rails 4.1.

К вашему сведению, в Rails 4.1 вы получите предупреждающее сообщение при загрузке, которое выглядит следующим образом:

=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)

Это указывает на то, что привязка к 0.0.0.0 не рекомендуется, и вместо этого вы должны использовать 127.0.0.1.

В Rails 4.2+ привязка сервера Rails по умолчанию к localhost вместо 0.0.0.0 или даже 127.0.0.1.

person Joshua Pinter    schedule 16.12.2018

На самом деле у рельсов есть разные параметры конфигурации, касающиеся того, слушает ли он что-то конкретное или все интерфейсы.

person jellohead    schedule 18.04.2013

Для тех из нас, кто использует виртуальную серверную среду Nitrous.io для разработки, я считаю, что мы должны привязаться к 0.0.0.0, поскольку локального хоста как такового нет.

person Rob R    schedule 17.03.2015

Перезапустил ОС у меня работает. (На Mac версии 10.12)

person Omer Aslam    schedule 22.11.2016