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;
}