43

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

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

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

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

4

3 回答 3

88

由于安全问题,最近有一个对 Sinatra 的提交将默认侦听地址更改为localhost开发模式。0.0.0.0

为了明确允许从网络访问,您需要以另一种模式(例如生产)运行您的应用程序,或者将bind选项设置为0.0.0.0.

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

$ ./my_sinatra_file.rb -o 0.0.0.0
于 2013-03-28T18:31:29.863 回答
5

确保 sinatra 服务器不只监听 localhost (127.0.0.1) ip 地址。

于 2013-03-28T15:37:26.270 回答
0

我正在附上一些额外的信息,这些信息可能会帮助像我这样的人把头撞到墙上。

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

要在 Windows 10 中执行此操作:

  1. 点击windows键
  2. 搜索防火墙并回车
  3. 进入高级设置
  4. 点击左上角的入站规则
  5. 点击右上角的新规则
  6. 点击端口选项
  7. 输入您的端口(对于 Sinatra 可能是 4567)
  8. 下一个
  9. 现在从域/私有/公共中选择。

现在要考虑的另一件事是谁可以访问您的 Web 服务器。如果你想要任何人,然后选择公开。我不确定(并且会喜欢其他人的意见)如何仅让同一公共网络上的设备进行连接。您也可以允许特定 IP 通过,但为此我建议您自己进行一些研究。

于 2016-11-12T21:51:26.710 回答