[英]Why Puma listen on 'tcp://localhost:3000' instead of 'http://localhost:3000'
[英]Why does Ruby on Rails use http://0.0.0.0:3000 instead of http://localhost:3000?
当我尝试按照官方“入门”Ruby on Rails 教程进行操作时,很快就出错了。 基本上它说:
…导航到 http://localhost:3000。 您应该看到 Rails 的默认信息页面。
但是当我按照说明进行操作时,我得到了
=> Rails 2.3.4 application starting on http://0.0.0.0:3000
在尝试了这两个地址之后,我知道它们指向同一个东西,但是有人可以向我解释为什么 Rails 上的 Ruby 使用http://0.0.0.0:3000
而不是http://localhost:3000
:700D9A 吗?
有没有办法让 WEBrick 服务器始终使用 localhost?
Localhost 的字面意思是“您的本地主机”,通常由 127.0.0.1 标识,所有到该地址的流量都通过环回接口路由。 如果您的 Web 服务器正在侦听 127.0.0.1 上的连接,这意味着它只接受来自同一主机的请求。
0.0.0.0 意味着 Rails 正在侦听所有接口,而不仅仅是环回接口。
0.0.0.0
表示所有接口。 包括127.0.0.1
又名localhost
。
众所周知,如果我访问http://localhost:3000/
,我的 firefox 浏览器会正确显示本地托管服务器,但当我尝试访问http://0.0.0.0:3000/
时,它不会按照 Ruby 的建议显示。 显然,在某种意义上,它们并不等价。
顺便说一句,我在 Windows 上。
如果你想要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
仅供参考,在 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
。
实际上,rails 有不同的配置选项,关于它是侦听特定接口还是所有接口。
对于我们这些使用 Nitrous.io 虚拟服务器环境进行开发的人,我相信我们必须绑定到 0.0.0.0,因为本身没有 localhost。
重新启动操作系统对我有用。 (在 Mac v 10.12 上)
使用这个:rails server -u webrick
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.