我对这个问题进行了自己的探索,我想我找到了一个解决方案,它可以让我有一个网络服务器同时运行我所有的小应用程序。
它基于由 Remi Taylor ( @remi on Github) https://github.com/remi/rack-stack创建的RackStack not-yet-a-gem 。
RackStack 受到 Rack::Builder 的启发,它似乎也很适合完成这样的任务——RackStack 只是朝着同一个方向走得更远,以一种我觉得非常好用和方便的方式抽象“堆栈”功能。
这是 RackStack 的演示,它包含两个示例应用程序(Sinatra 和 Rack): https ://github.com/stanislaw/skeletons/tree/master/rack_stack 。为了模拟真实服务器上的堆栈应用程序行为,我修改了我的 /etc/hosts 文件,让 localhost2 主机指向 127.0.0.1。
我启动瘦服务器,然后在 localhost 或 localhost2 上运行请求:对“localhost”的请求由 FirstApp 提供,而对“localhost2”的请求由 SecondApp 提供。
当我将在真实服务器上测试我的应用程序时,我现在无法预见可能出现的任何问题,但现在这种方法似乎正是我所寻找的:我想,在真实服务器上 Nginx 会将请求传递给与我的机架应用程序关联的所有主机到瘦服务器侦听的套接字。因此,RackStack 将只满足那些针对我堆栈中的应用程序的请求。
对此方案或替代方案的任何建议、改进仍不胜感激!