Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么RubyonRails使用http://0.0.0.0:3000 而不是http://localhost:3000?_Ruby On Rails_Ruby_Localhost_Webrick - Fatal编程技术网

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

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 在尝试了这两个地址之后,我知道它们指向同一个

我对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使用
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.1
0.0.0
不是您可以使用客户端实际访问的IP地址。它只是系统绑定调用使用所有可用IP地址的快捷方式。
localhost
绑定的原因阻止lvh.me
工作是彪马问题#782,现已修复。更多详细信息。