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 を呼び出す前に必要な環境変数を設定するランチャー スクリプトを作成し、インスタンスごとに 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;
    }

関連情報