5

nginx1.0.8をインストールしています。ここに私の問題があります:私は2つのファイルを持っています:file1.jsfile2.js。要求されたパスは次のようになります。

www.mysite.com/files_dir/%user%/file.js

要求されたヘッダー:「X-Header」が存在し、値が「OK」の場合、応答されるコンテンツはfile1.js、それ以外の場合はfile2.jsである必要があります。

ファイルは「html/files_dir」にあり、%user%は、私のサービスを通じて登録されたユーザー名を表すディレクトリのセットです。

これをnginxで構成するにはどうすればよいですか?nginxで可能である場合にのみ、php、asp、または同様のテクノロジーには興味がありません。

ありがとう

4

2 に答える 2

9

map別の変数に基づいて変数の値を定義できます。レベルで(つまり、の外で)map宣言する必要があります:httpserver

map $http_x_header $file_suffix {
  default "2";
  OK      "1";
};

次に、次のようlocationに新しい変数を使用してトリックを実行する必要があります$file_suffix

location ~ ^(/files_dir/.+)\.js$ {
  root html;
  try_files $1$file_suffix.js =404;
}
于 2012-02-07T07:28:41.743 に答える
1

これは nginx で非常に簡単に行うことができます。これは例です:

location /files_dir/ {

    set $file = file2.js;
    if ( $http_x_header = OK ) {
        set $file = file1.js;
    }
    rewrite ^(/files_dir/.*)/file.js$ $1/$file last;

}

NGINX の HTTP 変数についてはこちらで、nginx 書き換えモジュールについてはこちらで読むことができます。

于 2012-02-07T07:08:56.940 に答える