Ruby Sinatra Webservice在localhost上运行:4567但不在IP上运行

时间:2013-05-30 09:28:32

标签: ruby-on-rails ruby web-services sinatra webrick

我在Windows 7 32位操作系统上有一个ruby(使用sinatra)webservice。它在4567端口上运行。 当我使用 localhost:4567 时它工作正常,但是当我用我的机器的本地ip替换localhost时, 192.168.103.99:4567 它不起作用,并且失败连接。 我已经禁用了防火墙,旁路代理并将端口4567添加到异常中,但仍然没有运气。

可能是什么问题?

4 个答案:

答案 0 :(得分:48)

@SudarshanShubakar的评论为我工作。

ruby app.rb -o 0.0.0.0

答案 1 :(得分:18)

通过run! if app_file == $0检查使用内置服务器时,Sinatra's doc说明需要set :bind, '0.0.0.0'才能使接口在localhost图层之外可用。

不需要使用自定义IP地址或反向DNS(mydomain.com ...):'0.0.0.0'是合法值expected by Sinatra,将被正确解释。

因此,在所有接口上提供的最小的,自包含的Sinatra应用程序,不仅是localhost,还是:

require 'sinatra/base'

class MyApp < Sinatra::Base
  set :bind, '0.0.0.0'

  get '/' do
    'Hello World'
  end

  run! if app_file == $0
end

答案 2 :(得分:10)

设置服务器主机名或IP地址使用sinatra setting bind ,如

set :bind, '192.168.103.99'

答案 3 :(得分:1)

require 'rubygems'
require 'sinatra'
require "dbi"

set :bind, '192.168.200.185'
get '/' do
    'hello word'
end