为 nginx 和 Rails 设置环境变量

为 nginx 和 Rails 设置环境变量

Apache 的模块 mod_env 提供了一种在配置文件中设置环境变量的便捷方法,例如:

<VirtualHost *:80>
  ServerName xyz.com
  DocumentRoot /var/www/rails_app/public
  PassengerAppRoot /var/www/rails_app
  SetEnv MY_VARIABLE contents
</VirtualHost>

http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv

但是,在 nginx 中我找不到任何可以达到相同目的的东西。有什么替代方案吗?我考虑过在 .profile 文件中设置环境变量(我使用的是 Ubuntu 10.04),但这不会像 Apache 那样具有“每个 vHost”隔离,对吗?

这里有什么替代方案?

答案1

FastCGI 参数用于 fastcgi 传递或代理集标头用于代理通过时。

答案2

为什么不直接创建一个启动脚本,在调用 nginx 或 rails 之前设置所需的环境变量,并每个实例都有一个脚本?

答案3

fastcgi_params 可让您轻松设置环境变量。以下是使用 php-fpm 的 fastcgi params 添加环境变量的示例:

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param  MY_VARIABLE     contents;
        include        fastcgi_params;
    }

相关内容