44

我对Ruby on Rails非常陌生,所以当我尝试遵循官方的“入门”ruby on rails 教程时,我有点失望,因为它很快就出错了。基本上它说:

…导航到 http://localhost:3000。您应该看到 Rails 的默认信息页面。

但是当我按照说明进行操作时,我得到了

=> Rails 2.3.4 应用程序从 http://0.0.0.0:3000 开始

在尝试了这两个地址之后,我知道它们指向同一个东西,但是有人可以向我解释为什么 Ruby on Rails 使用http://0.0.0.0:3000而不是http://localhost:3000

有没有办法让 WEBrick 服务器始终使用 localhost?

4

8 回答 8

62

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

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

于 2009-09-25T18:02:16.440 回答
21

0.0.0.0表示所有接口。包括127.0.0.1aka localhost

于 2009-09-25T18:02:41.523 回答
2

众所周知,如果我访问,我的 Firefox 浏览器会正确显示本地托管的服务器, 但是当我 按照 Ruby 的建议http://localhost:3000/ 尝试访问时,它不会显示 。http://0.0.0.0:3000/显然,在某种意义上,它们并不等同。

顺便说一句,我在 Windows 上。

于 2014-10-22T16:32:07.313 回答
2

如果需要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
于 2016-07-19T01:52:37.253 回答
2

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 服务器默认绑定是 tolocalhost0.0.0.0不是127.0.0.1.

于 2018-12-16T21:27:52.680 回答
0

实际上,rails 有不同的配置选项,关于它是否侦听特定或所有接口。

于 2013-04-18T17:21:06.203 回答
0

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

于 2015-03-17T20:19:19.523 回答
0

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

于 2016-11-22T13:19:01.627 回答