web-dev-qa-db-ja.com

なぜRuby on Railsはhttp:// localhost:3000ではなくhttp://0.0.0.0:3000を使用しますか?

私はRuby on Railsが初めてなので、公式の「Getting Started "Ruby on Rails=チュートリアル、それは非常にすぐにうまくいかなかったので少しがっかりしました。

http:// localhost:30 に移動します。 Railsのデフォルトの情報ページが表示されます。

しかし、指示に従うと、

 => Rails 2.3.4 http://0.0.0.0:3000
以降のアプリケーション]

両方のアドレスを試した後、それらが同じものを指していることがわかりますが、誰かがRuby on Rails使用http://0.0.0.0:3000 の代わりに http://localhost:3000

常にWEBbrickサーバーにlocalhostを使用させる方法はありますか?

39
Lou

Localhostは、文字通り「ローカルホスト」を意味し、通常127.0.0.1で識別され、そのアドレスへのすべてのトラフィックはループバックインターフェイスを介してルーティングされます。 Webサーバーが127.0.0.1で接続をリッスンしている場合、これは同じホストからの要求のみを受け入れることを意味します。

0.0.0.0は、Railsがループバックインターフェイスだけでなくallインターフェイスでリッスンしていることを意味します。

57
andri

0.0.0.0はすべてのインターフェースを意味します。 127.0.0.1 a.k.a. localhostを含む。

localhostが必要な場合、簡単な方法の1つは、バインディング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
2
ecoologic

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を使用する必要があることを示しています。

In Rails 4.2+では、Rails=サーバーのデフォルトのバインディングは、0.0.0.0ではなくlocalhostに、または127.0.0.1

1
Joshua Pinter

誰もが知っているように、Firefoxブラウザーは、http://localhost:3000/しかし、アクセスしようとすると表示されませんhttp://0.0.0.0:3000/ Rubyの推奨どおり。明らかに、ある意味では、それらは同等ではありません。

私はWindowsを使用しています。

1
John Vandivier

OSを再起動してくれました。 (Mac v 10.12の場合)

0
Omer Aslam

実際にRailsには、特定のインターフェイスまたはすべてのインターフェイスをリッスンするかどうかについて、さまざまな構成オプションがあります。

0
jellohead

Nitrous.io仮想サーバー環境を開発に使用している私たちにとっては、ローカルホスト自体が存在しないため、0.0.0.0にバインドする必要があると思います。

0
Rob R