2013-03-28 37 views
42

我有一個簡單的Sinatra服務器,我通過textmate運行,但無法從同一網絡上的另一臺計算機訪問。無法從同一網絡上的另一臺計算機訪問本地Sinatra服務器

我在Mac OS 10.8.3上運行Ruby 1.9.3p327和Sinatra 1.4.1。防火牆已禁用。

我在不同的網絡和計算機上測試過相同的場景。

計算機響應簡單的ping,但是當我嘗試遠程登錄端口4567時,我無法建立連接。

+0

你爲什麼使用telnet?我不明白你想在這裏實現什麼。 Sinatra是一個Web框架。嘗試使用瀏覽器。 –

+0

不適用於瀏覽器 –

+0

只是爲了確保:您是否在IP地址末尾包含端口號?例如:your.ip.address:4567 –

回答

86

有一個recent commit to Sinatra由於安全考慮,在開發模式下將默認監聽地址從0.0.0.0更改爲localhost

爲了明確允許從網絡訪問,您需要以其他模式(例如生產)運行您的應用,或將bind option設置爲0.0.0.0

您可以使用使用-o選擇建在服務器命令行做到這一點:

$ ./my_sinatra_file.rb -o 0.0.0.0 
+0

這工作!謝謝! –

+2

,近期提交了最近在@馬特的答案的時候,但在這裏它是一年後,默認綁定埋在西納特拉文檔,並在入門沒有提及。綁定,「0.0.0.0'' –

+9

您也可以直接使用'設置設置它在你的應用程序! – GuiSim

4

確保sinatra服務器不僅僅監聽本地主機(127.0.0.1)的IP地址。

+0

我該怎麼做?對不起,我是一個完整的noob :) –

+3

閱讀西納特拉幫助,或者用'-h'標誌運行服務器。它告訴如何做到這一點 –

0

我插嘴一點點額外的信息,可以幫助我這樣的人敲打他們的頭靠在壁。

我在Windows機器上,而不是Mac機上,我不得不打開我使用的端口(默認爲Sinatra是4567)給公衆(即使我在大學網絡上)。

要在Windows 10這樣做:

  1. 命中Windows鍵
  2. 搜索防火牆和打在上面輸入
  3. 轉到高級設置
  4. 點擊入站規則左
  5. 點擊右上角的新規
  6. 點擊端口選項
  7. 輸入您的端口(大概4567爲Sinatra)
  8. Next
  9. 現在從域名/私人/公共選擇。

現在要考慮的另一件事是誰可以訪問您的Web服務器。如果你想要任何人,然後選擇公開。我不確定(並且會喜歡其他人的輸入)如何只在同一個公共網絡上連接設備。你也可以允許特定的IP地址,但爲此我建議你自己做一些研究。

相關問題