[英]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.