无法通过本地网络访问sinatra应用程序

我有rails应用程序。 如果我用rails s (端口3000)启动它,它可以在我的机器和本地网络上的每个设备上通过ip地址(在我的情况下为192.168.0.3)完美地工作。
我有sinatra申请。 如果我用ruby app.rb (端口4567)启动它,它在我的机器上运行完美,但它无法从本地网络上的其他设备访问。

在此处输入图像描述

两个应用程序都使用Thin作为应用服务器。

这与sinatra如何运作有关吗?

试试ruby app.rb -o 0.0.0.0ruby app.rb -e production 。 要么应该工作。

让我为Ivan的答案添加一些进一步的信息。 Sinatra在命令行上的README说:

 Sinatra applications can be run directly: ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-o HOST] [-s HANDLER] Options are: -h # help -p # set the port (default is 4567) -o # set the host (default is 0.0.0.0) -e # set the environment (default is development) -s # specify rack server/handler (default is thin) -x # turn on the mutex lock (default is off) 

根据文档,默认HOST是0.0.0.0,但我仍然需要像Ivan所说的那样指定“-o 0.0.0.0”。 否则,无法从服务器计算机外部访问服务器。 多么奇怪!

只想补充伊万的答案和罗伯特的澄清。

默认情况下,sinatra在开发模式下运行,而不是在生产模式下运行。 在开发模式下,sinatra将绑定的默认主机是“localhost”,这意味着只有本地计算机才能与之交互。

一旦你指定’-e production’,你的sinatra webapp就会在生产模式下运行,它绑定的默认主机是0.0.0.0,这意味着它可以与所有其他主机交互。

或者,如果要继续进行开发,请指定’-o 0.0.0.0′

Interesting Posts