使用不同的 ENV 变量服务相同的 Rails 应用程序

Serving the same Rails application with different ENV variables

我正在尝试在不同的端口上使用不同的 ENV 变量为同一个 Rails 应用程序提供服务,即

这个特定的 ENV 变量会影响应用程序的样式(想想多租户),我希望能够检查具有两种样式的同一应用程序。

我使用 nginx+Passenger 进行了以下设置(为了便于阅读而缩短):

http {
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/bin/ruby;
    passenger_max_pool_size 8;
    passenger_max_instances_per_app 4;
    passenger_max_requests 500;
    passenger_show_version_in_header off;

    server {
        listen 443;
        server_name staging.example.de;
        root /apps/staging/example/current/public;
        passenger_enabled on;
        rails_env staging;
        passenger_env_var BRAND_SPACE default;
    }

    server {
        listen 444;
        server_name staging.example.de;
        root /apps/staging/example/current/public;
        passenger_enabled on;
        rails_env staging;
        passenger_env_var BRAND_SPACE somethingelse;
    }
}

现在发生的是,重启后第一次请求的应用程序的 ENV 变量用于两个应用程序,即如果您首先在 443 上请求应用程序,那么 ENV 变量 "default" 也会为 444 上的应用程序设置。

我是不是使用的配置有误,还是应该以其他方式解决?如果是这样,我将不胜感激。

问题又出现了,终于找到答案了:

https://www.phusionpassenger.com/library/config/nginx/reference/#passenger_app_group_name

设置此变量将允许您使用相同的根目录在两个不同的域或服务器块下提供相同的应用程序。