3

構成ファイルを介していくつかの環境変数をnginxに設定しようとしています。nginx/0.8.53 を使用していますが、機能していません。

server {
    listen 80;
    server_name localdictus;
    root /opt/vdmo_dictus/public;   # <--- be sure to point to 'public'!
    passenger_enabled on;
    rails_env development;
    env VDMO_MANDANT = "somevalue";
    }

これはエラーメッセージです:

unknown directive "env" in /opt/nginx/conf/nginx.conf:43

ドキュメントには、「env」コマンドがあることがわかります...だから、私は何を間違っていますか?? http://wiki.nginx.org/CoreModule#env

ちなみに、シェルでエクスポートを介して環境変数を設定することは、私のアプリケーションのオプションではありません。

ここに行があります:

37:    server {
38:    listen 80;
39:    server_name localdictus;
40:    root /opt/vdmo_dictus/public;   # <--- be sure to point to 'public'!
41:    passenger_enabled on;
42:    rails_env development;
43:    env VDMO_MANDANT = "somevalue";
44:    }

よろしく、

アレックス

4

3 に答える 3

5

ディレクティブの「コンテキスト」にリンクしたドキュメントからis , not . ディレクティブをブロックの外 (ブロックの外) に置きます。envmainserverserver { ... }

この議論も参照してください。envディレクティブがあなたが探していることを行うとは思いません。

于 2011-01-19T16:39:26.427 に答える
0

env ディレクティブを渡さないでください。-Enginx を起動するときにフラグを使用するだけです。

 sudo -E /usr/local/nginx/sbin/nginx
于 2012-06-25T20:47:27.187 に答える
-1

nginx を使用して Rails アプリの環境変数を設定するためのソリューション。

たとえば、 RAILS_ROOT は /opt/myapp_MANDANT です。

次に、次のコードは RAILS_ROOT パスから MANDANT を抽出し、Rails 環境に設定します。

split = RAILS_ROOT.split("_")
puts split.inspect


if split.size > 1
    ENV['VDMO_SYSTEM'] = split[2]
    ENV['VDMO_MANDANT'] = split[1]
elsif split.size > 0
    ENV['VDMO_SYSTEM'] = nil
    ENV['VDMO_MANDANT'] = split[1]
end

このコードを environment.rb ファイルに入れて機能させてください。

このアプローチを使用する良い方法は、 --bind オプションを使用してマウントすることです。

例:

   mkdir railsapp_mandant
   mount -t /originalsource /railsapp_mandant

次に、Rails アプリのパブリック パスを /railsapp_mandant/public/ ではなく /originalsource/public/ に設定します。

于 2011-01-19T15:03:15.143 に答える