Ruby on rails 为什么RubyonRails使用http://0.0.0.0:3000 而不是http://localhost:3000?
我对RubyonRails非常陌生,所以当我试图学习官方的“RubyonRails入门教程”时,我有点失望,因为它很快就出了问题。基本上它说: …导航到http://localhost:3000. 您应该看到Rails的默认信息页面 但当我按照指示行事时,我会 => Rails 2.3.4 application starting on http://0.0.0.0:3000 =>Rails 2.3.4应用程序从http://0.0.0.0:3000 在尝试了这两个地址之后,我知道它们指向同一个东西,但是有人能向我解释为什么RubyonRails使用Ruby on rails 为什么RubyonRails使用http://0.0.0.0:3000 而不是http://localhost:3000?,ruby-on-rails,ruby,localhost,webrick,Ruby On Rails,Ruby,Localhost,Webrick,我对RubyonRails非常陌生,所以当我试图学习官方的“RubyonRails入门教程”时,我有点失望,因为它很快就出了问题。基本上它说: …导航到http://localhost:3000. 您应该看到Rails的默认信息页面 但当我按照指示行事时,我会 => Rails 2.3.4 application starting on http://0.0.0.0:3000 =>Rails 2.3.4应用程序从http://0.0.0.0:3000 在尝试了这两个地址之后,我知道它们指向同一个
http://0.0.0.0:3000
而不是http://localhost:3000
有没有办法让WEBrick服务器始终使用localhost?localhost的字面意思是“您的本地主机”,通常由127.0.0.1标识,到该地址的所有流量都通过环回接口路由。如果您的Web服务器正在侦听127.0.0.1上的连接,这意味着它只接受来自同一主机的请求
0.0.0.0表示Rails正在侦听所有接口,而不仅仅是环回接口。
0.0.0
表示所有接口。包括127.0.0.1
a.k.a.localhost
实际上,rails在监听特定接口或所有接口方面有不同的配置选项。大家都知道,如果我访问,我的firefox浏览器会正确显示本地托管服务器
http://localhost:3000/
但当我尝试访问时,它不会显示
http://0.0.0.0:3000/
正如Ruby推荐的那样。显然,在某种意义上,它们并不等同
顺便说一句,我在Windows上。对于我们这些使用Nitrous.io虚拟服务器环境进行开发的人,我相信我们必须绑定到0.0.0.0,因为没有本地主机本身。如果您想要
本地主机
,一个快速的方法是指定绑定rails s-blocalhost
(以及带有-pnnn
的端口,带有rails-help的更多选项)
出于需要调查的原因,我的服务器默认在localhost
上开始运行。因此lvh.me
停止工作,阻止我指定子域(例如:www.lvh.me:3000
)
我通过指定绑定“解决”了此问题:
rails s -b0.0.0.0 # will work with lvh.me
重新启动操作系统对我来说是可行的。(在Mac v 10.12上)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
,甚至127.0.0.1
设置WEBrick仅在localhost上侦听,这意味着忽略外部连接:script/server--binding=127.0.0.1FYI,在启动WEB时指定绑定为127.0.0.1rick为我建立了本地rails连接(以及外部web连接)更快。因此,如果您的本地连接速度较慢,我推荐@tadman建议的方法。在Rails 3中,它是Rails服务器--binding=127.0.0.10.0.0
不是您可以使用客户端实际访问的IP地址。它只是系统绑定调用使用所有可用IP地址的快捷方式。localhost
绑定的原因阻止lvh.me
工作是彪马问题#782,现已修复。更多详细信息。