
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 を呼び出す前に必要な環境変数を設定するランチャー スクリプトを作成し、インスタンスごとに 1 つのスクリプトを用意するのはどうでしょうか?
答え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;
}