2012-02-06 13 views
5

私はnginx 1.0.8をインストールしました。 ここに私の問題: 私は2つのファイル:file1.jsfile2.jsがあります。要求されたヘッダ場合nginx - 要求されたヘッダに基づいた応答

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

: "X-ヘッダー" は存在している要求されたパスは次のようなものです値「OK」の場合、応答されるコンテンツはfile1.js else file2.jsである必要があります。

ファイルは「HTML/files_dir」に位置していると、%ユーザ%は私のサービスを通じて登録されたユーザ名を表しディレクトリのセットです。

これをnginxでどのように設定すればよいですか?私はPHP、ASPやそれに類似した技術に興味がないのは、nginxで可能な場合だけです。

おかげ

答えて

9

mapはあなたが別の変数に基づいて、変数の値を定義することができます。 maphttpレベル(serverのすなわち外)で宣言する必要があります。

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; 
} 
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のhereでHTTP変数について読むことができた、とnginxの書き換えモジュールについてhere

+0

感謝を使ってトリックを行う必要があります$ file = file2.js; "="はありません。$ file2.jsを設定します。 –

+2

場所にifsを使用する場合は、http://wiki.nginx.org/IfIsEvilを読むことをおすすめします。 – MyGGaN