【发布时间】:2011-10-01 02:51:15
【问题描述】:
我有这个要求,其中有多个 Rails 应用程序。每个应用程序部署在两个应用服务器(app1 和 app2)中,并通过单独的服务器 (lb) 上的 nginx 进行负载平衡。
lb 盒子包含没有乘客插件的普通 nginx。 Rails 应用程序单独部署在乘客站上。
所有 Rails 应用程序都需要在同一个域上运行,但 sub_uri 不同,如下所示
http://www.example.com/rails1 http://www.example.com/rails2我有类似下面的 lb box nginx 配置。
http {
...
upstream rails1_cluster {
ip_hash;
server app1.server:3001;
server app2.server:3001;
}
upstream rails2_cluster {
ip_hash;
server app1.server:3002;
server app2.server:3002;
}
...
server {
server_name www.example.com;
...
...
location /rails1 {
proxy_pass http://rails1_cluster;
...
}
location /rails2 {
proxy_pass http://rails2_cluster;
...
}
....
}
}
使用此设置,在 app1 和 app2 中独立于乘客上运行的应用会抛出无法找到任何路线 /rails1/ 的错误。
这篇文章"How To Deploy Phusion Passenger To A Subdirectory, Routing Errors, And Restarting" 试图解决同样的问题,但它建议更改路线,我不希望这样做。正在处理的 Rails 应用程序具有相同的代码库,但针对满足特定客户的特定实例进行了定制。
在 Nginx 服务器的乘客插件中,有一个 Passenger_base_uri 有助于为应用设置子 URI。在乘客独立的情况下,相同的等价物是多少?还是我在这里遗漏了一些基本的东西?任何帮助,建议都会有所帮助。
【问题讨论】:
标签: nginx location uri passenger