我有一个简单的 Sinatra 服务器,我通过 textmate 运行,但我无法从同一网络上的另一台计算机访问。
我在 Mac OS 10.8.3 上运行 Ruby 1.9.3p327 和 Sinatra 1.4.1。防火墙被禁用。
我在不同的网络和计算机上测试了相同的场景。
计算机响应简单的 ping,但是当我尝试 telnet 端口 4567 时,我无法建立连接。
我有一个简单的 Sinatra 服务器,我通过 textmate 运行,但我无法从同一网络上的另一台计算机访问。
我在 Mac OS 10.8.3 上运行 Ruby 1.9.3p327 和 Sinatra 1.4.1。防火墙被禁用。
我在不同的网络和计算机上测试了相同的场景。
计算机响应简单的 ping,但是当我尝试 telnet 端口 4567 时,我无法建立连接。
由于安全问题,最近有一个对 Sinatra 的提交将默认侦听地址更改为localhost
开发模式。0.0.0.0
为了明确允许从网络访问,您需要以另一种模式(例如生产)运行您的应用程序,或者将bind
选项设置为0.0.0.0
.
您可以使用以下选项从命令行使用内置服务器执行此操作-o
:
$ ./my_sinatra_file.rb -o 0.0.0.0
确保 sinatra 服务器不只监听 localhost (127.0.0.1) ip 地址。
我正在附上一些额外的信息,这些信息可能会帮助像我这样的人把头撞到墙上。
我在 Windows 机器上,而不是 Mac 上,我必须向公众开放我正在使用的端口(Sinatra 的默认端口是 4567)(即使我在大学网络上)。
要在 Windows 10 中执行此操作:
现在要考虑的另一件事是谁可以访问您的 Web 服务器。如果你想要任何人,然后选择公开。我不确定(并且会喜欢其他人的意见)如何仅让同一公共网络上的设备进行连接。您也可以允许特定 IP 通过,但为此我建议您自己进行一些研究。