如何使用Rack map在不同的端口上运行两个Thin(或其他)服务器?

时间:2012-05-25 13:48:47

标签: ruby ssl rack

我的目标是通过Rack进行HTTP和HTTPS / SSL的自动化测试,无需借助代理服务器设置或类似的东西。我有一个我想要测试的宝石,我希望其他人也可以运行测试,所以我希望它尽可能自包含。

App的代码在运行时运行正常,所以它不包含在这里,问题在于Rack部分。

我想做这样的事情:

app = Rack::Builder.app do
  map "/" do
    Rack::Handler::WEBrick.run App, Port: 3000
  end

  map "/ssl" do
    Rack::Handler::WEBrick.run App, Port: 3001 # more options for SSL here...
  end
end

run app

我尝试了上面代码的几种组合,例如:

http = Rack::Builder.app do
  map "/" do
    run App
  end
end


https = Rack::Builder.app do  
  map "/ssl" do
    run App
  end
end

Rack::Handler::WEBrick.run http, Port: 3000
Rack::Handler::WEBrick.run https, Port: 3001 # more options for SSL here...

随着两个服务器的设置,我倾向于在列出的第一个端口上运行一个服务器,然后在中断时它将在列出的下一个端口上运行第二个服务器 - 然后,在下一个中断时,在9292上的另一个服务器上运行或者它关闭了。

我显然做的事情不太对劲。

这非常接近,但最终通过两个不同的命令行命令运行这两个服务器: Starting thin server on different ports

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

Current Thin不支持此功能 - 我检查了源代码。

瘦v2仍然是预发行版,但配置代码看起来像是通过在配置文件中声明多个侦听器来支持这一点。

但Thin v2仍然是alpha软件。

您还可以切换到另一台服务器,例如Unicorn, 明确支持绑定到多个端口或地址。