2013-03-28 74 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地址,但为此我建议你自己做一些研究。

相关问题