为Rack中间件设置Rails环境哈希变量

时间:2015-06-08 15:55:39

标签: ruby-on-rails rack

我在nginx代理后面的独立Passenger上提供了一个Rails应用程序。由于这种设置,环境哈希需要稍微调整才能使用我们正在使用的机架中间件(rack-cas)。具体来说,我必须在中间件的调用方法中设置env['SERVER_PORT'] = '443'env['HTTPS'] = 'on'(我们不希望Passenger使用SSL,宁愿nginx代理处理它)。

我可以在中间件中做到这一切,但是我可以在Rails应用程序中做到这一点,所以我不必自定义中间件吗?

1 个答案:

答案 0 :(得分:0)

事实证明,这一切都可以通过nginx代理的配置完成,根本不必触摸应用程序或中间件:

    location /foo/ {
        proxy_pass http://0.0.0.0:SOME_PORT/foo/;

        proxy_buffering off;
        proxy_http_version 1.1;

        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host; # more robust than http_host
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # this ensures your app's env is correct
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Proto https; # add this if you always want the redirects to go to HTTPS
    }