Почему Ruby on Rails использует http://0.0.0.0:3000 вместо http://localhost: 3000?
Я очень новичок в Ruby on Rails, поэтому, когда я попытался следовать официальному руководству " Начало работы" ruby on rails tutorial, я был немного разочарован, потому что он пошел неправильно очень быстро. В основном он сказал:
... перейдите к 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
?
Есть ли способ, чтобы сервер WEBbrick использовал localhost?
Ответы
Ответ 1
Localhost означает буквально "ваш локальный хост", обычно обозначаемый 127.0.0.1, и весь трафик на этот адрес маршрутизируется через интерфейс loopback. Если ваш веб-сервер прослушивает подключения на 127.0.0.1, это означает, что он принимает только запросы, поступающие с одного и того же хоста.
0.0.0.0 означает, что Rails прослушивает все интерфейсы, а не только интерфейс loopback.
Ответ 2
0.0.0.0
означает все интерфейсы. Включая 127.0.0.1
a.k.a. localhost
.
Ответ 3
На самом деле рельсы имеют разные параметры конфигурации, если они прослушивают что-то конкретное или все интерфейсы.
Ответ 4
Как и все знают, мой браузер Firefox правильно отображает локально размещенный сервер, если я получаю доступ http://localhost:3000/
но он НЕ отображается, когда я пытаюсь получить доступ http://0.0.0.0:3000/
как рекомендовано Ruby. Ясно, что в некотором смысле они не эквивалентны.
Я нахожусь в ОС Windows.
Ответ 5
Для тех из нас, кто использует виртуальный сервер Nitrous.io для разработки, я считаю, что мы должны привязываться к 0.0.0.0, так как локального хоста не существует.
Ответ 6
Если вы хотите 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
Ответ 7
Перезагрузка os работает для меня. (На Mac v 10.12)