2009-09-25 6 views
30

Я очень новичок в Ruby on Rails поэтому, когда я попытался последовать за официальным «Начало работы« рубинский учебник по рельсам », я был немного разочарован, потому что он поступил не так быстро. В основном он сказал:Почему Ruby on Rails использует http://0.0.0.0:3000 вместо http: // localhost: 3000?

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

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

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

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

Есть ли способ, чтобы сервер WEBbrick использовал localhost?

ответ

49

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

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

+7

Чтобы настроить WEBrick для прослушивания только на localhost, что означает, что внешние соединения игнорируются: script/server --binding = 127.0.0.1 – tadman

+5

FYI, указав привязку к 127.0.0.1 при загрузке WEBrick для меня сделал мое локальное соединение рельсов (и, таким образом, внешние веб-соединения) намного быстрее. Поэтому, если ваше локальное соединение работает медленно, я рекомендую, что предложил @tadman. В Rails 3 это сервер rails --binding = 127.0.0.1 ** –

15

0.0.0.0 означает все интерфейсы. В том числе 127.0.0.1 a.k.a. localhost.

0

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

0

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

Я нахожусь в ОС Windows.

+0

'0.0.0.0' не является IP-адресом, к которому вы действительно можете получить доступ с помощью клиента. Это просто ярлык для вызова привязки системы к использованию доступных _all_ IP-адресов. –

0

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

0

Если вы хотите 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 
0

Restarted операционная система работает для меня. (На Mac v 10.12)