我觉得你有同样的问题,我有。您希望使用相同的物理目录来托管应用程序实例,但您希望通过使用不同的DNS条目(redmine.development/redmine.production)在不同的环境(开发/生产)下与应用程序进行交互。
问题是,乘客将传入的请求识别为使用根目录上的目录中找到的rails应用程序。如果您在多个nginx配置中对root使用相同的字面参考,乘客会将请求转发到在root中找到的单个正在运行的实例。也就是说,如果您先启动开发应用程序,然后尝试通过redmine.production访问生产,那么您最终会与开发环境进行交互。但是,如果您先启动生产应用程序,然后尝试访问redmine.development,则最终会与生产进行交互。
答案是符号链接您的应用程序的目录要运行各种环境。 Passenger只查看根目录的文字路径 - 如果它与当前正在运行的实例不匹配,它将生成一个新的目录。
前。)
物理根为~/rails_apps/myserver
(其中myserver中的应用程式,公众等)
创建一个名为~/rails_apps/dev.myserver
符号链接~/rails_apps/myserver
和另一个叫~/rails_apps/pro.myserver
到~/rails_apps/myserver
。
现在在您的nginx配置中,使用作为根用户的公共文件夹的符号链接位置。
前,如果符号链接/home/user/rails_apps/[dev|pro].redmine点到/ home /用户/ rails_apps /管理平台)
server {
listen xxxx;
server_name redmine.development;
root /home/user/rails_apps/dev.redmine/public;
passenger_enabled on;
rails_env development;
}
server {
listen xxxx;
server_name redmine.production;
root /home/user/rails_apps/pro.redmine/public;
passenger_enabled on;
rails_env production;
}
正在使用的管理平台相同的根目录两个实例? – synecdoche 2012-04-30 02:04:58
这似乎是一个错误nginx虚拟机制+乘客... – BrunoJCM 2012-07-05 17:25:37