我是 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?
答案 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上,您会在启动时收到一条警告消息,如下所示:
=> 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上)