无法从同一网络上的另一台计算机访问本地Sinatra服务器

时间:2013-03-28 15:15:57

标签: ruby web-services sinatra

我有一个简单的Sinatra服务器,我通过textmate运行,但我无法从同一网络上的另一台计算机访问。

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

我在不同的网络和计算机上测试了相同的场景。

计算机响应简单的ping,但当我尝试telnet端口4567时,我无法建立连接。

3 个答案:

答案 0 :(得分:88)

由于安全问题,有一个recent commit to Sinatra在开发模式下将localhost的默认侦听地址更改为0.0.0.0

要明确允许从网络进行访问,您需要以其他模式(例如制作)运行应用,或将bind option设置为0.0.0.0

您可以使用内置服务器使用-o选项从命令行执行此操作:

$ ./my_sinatra_file.rb -o 0.0.0.0

答案 1 :(得分:5)

确保sinatra服务器不仅侦听localhost(127.0.0.1)的ip地址。

答案 2 :(得分:0)

我正在寻找一些额外的信息,可以帮助像我这样的人撞墙。

我在Windows机器上,而不是Mac机器上,我不得不向公众打开我正在使用的端口(Sinatra默认为4567)(即使我在大学网络上)

要在Windows 10中执行此操作:

  1. 点击Windows键
  2. 搜索防火墙并按Enter键
  3. 转到高级设置
  4. 点击左上角的入站规则
  5. 点击右上角的新规则
  6. 单击端口选项
  7. 输入您的端口(Sinatra可能为4567)
  8. 下一步
  9. 现在选择域/私人/公共。
  10. 现在要考虑的另一件事是谁可以访问您的Web服务器。如果你想要任何人,那就选择公开。我不确定(并希望其他人的输入)如何只让同一公共网络上的设备连接。您也可以通过特定的IP,但为此我建议您自己进行一些研究。