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

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

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上的另一个服务器或它关闭下。

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

这非常接近,但最终通过两个不同的命令行命令运行两个服务器: 在不同的端口上启动瘦服务器

任何帮助深表感谢。

当前的Thin不支持这个 – 我检查了源代码。

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

但Thin v2仍然是alpha软件。

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