Модуль 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), но у меня не будет такой же изоляции «на vHost», как у Apache, верно?
Какие здесь альтернативы?
FastCGI Param для прохождения fastcgi или Заголовок набора прокси для при прохождении прокси.
Почему бы просто не создать сценарий запуска, который устанавливает необходимые переменные среды перед вызовом nginx или rails .. и иметь по одному сценарию на каждый экземпляр?
fastcgi_params позволит вам легко устанавливать переменные среды. Вот пример добавления переменных окружения с использованием параметров fastcgi с php-fpm:
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;
}