web-dev-qa-db-ja.com

Nginxでサーバー固有のENV値をどのように設定しますか?

環境変数を使用してデータベース接続などを設定するプロジェクトを開始しています。 (人々は不注意でそれらを上書きするため、彼らは設定ファイルを使いたくありませんでした)。

とにかく、私はnginxを使用していますが、 envをサポートしています - 十分にサポートしている ではないようです。 サーバーブロックごと でenv値を設定することはできません。つまり、これは機能しません。

server {
    listen 80;
    server_name domain;
    env FOO = "bar";
}

これを行う必要があります:

env FOO = "bar";

http {
    server {
        listen 80;
        server_name domain;
    }
}

つまり、vhost固有の値を設定することはできません。したがって、各サイトのvhost構成全体を作成し、現時点で必要なものだけをアクティブ化して、値が正しく設定されるようにする必要があります。

これを回避する方法はありますか?

9
Xeoncross

Fastcgiを使用している場合、 fastcgi_param から値を渡すことでこれを回避できることがわかります。

server {
    listen 80;
    server_name domain;

    # Pass PHP scripts to php-fastcgi listening on port 9000
    location ~ path/to/it {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param FOO "bar";
    }
}
13
Xeoncross