为什么Ruby on Rails使用http://0.0.0.0:3000而不是http:// localhost:3000?

时间:2009-09-25 17:59:16

标签: ruby-on-rails ruby localhost webrick

我是 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吗?

有没有办法让WEBbrick服务器一直使用localhost?

8 个答案:

答案 0 :(得分:55)

Localhost意味着“你的本地主机”,通常由127.0.0.1标识,并且该地址的所有流量都通过环回接口路由。如果您的Web服务器正在侦听127.0.0.1上的连接,这意味着它只接受来自同一主机的请求。

0.0.0.0表示Rails正在侦听所有接口,而不仅仅是环回接口。

答案 1 :(得分:21)

0.0.0.0表示所有接口。包括127.0.0.1 a.k.a. localhost

答案 2 :(得分:2)

如果您需要localhost,一种快捷方式是指定绑定rails s -blocalhost(以及包含-pNNNN的端口,使用rails s --help指定更多选项。

我的服务器默认在localhost上开始运行,原因有待调查。结果lvh.me停止了工作,阻止我指定子域名(例如:www.lvh.me:3000)。

我"解决了#34;这指定了绑定:

rails s -b0.0.0.0 # will work with lvh.me

答案 3 :(得分:1)

大家都知道,如果我访问,我的firefox浏览器会正确显示本地托管的服务器     http://localhost:3000/ 但是当我尝试访问时它不显示     http://0.0.0.0:3000/ 正如Ruby推荐的那样。显然,从某种意义上说,它们并不等同。

我正在使用Windows btw。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

实际上,rails有不同的配置选项,如果它侦听某些特定接口或所有接口。

答案 6 :(得分:0)

对于我们这些使用Nitrous.io虚拟服务器环境进行开发的人,我认为我们必须绑定到0.0.0.0,因为本身没有本地主机。

答案 7 :(得分:0)

重新启动操作系统适用于我。 (在Mac v 10.12上)