next up previous contents
Next: 8.2.4 break Up: 8.2 rewrite Previous: 8.2.2 rewrite_log

8.2.3 if

条件を判断する if ディレクティブです。server , location ブロックに 置くことができます。

   if $($ condition $)$ {  ...  }

但し、nginx の if は一般的なものではなく、利用することが出来るディレクティブ に制限があるために、location で行える場合にはそちらを使うべきです。

condition には以下のものが利用できます。

変数 空の文字列、あるいは 0 ならば偽
変数と文字列の比較 '=' または '!=' が利用できる
変数の正規表現による比較 ~,~*, !~, !~*
大小英文字の区別のあり、なしによる比較、あるいはそれらの否定演算子 !~, !~* による比較ができる。キャプチャにより、 $1...$9 変数による後方参照もできる。もし、正規表現に }; が含まれる場合には、シングルあるいはダブルクォートで正規表現を 囲む必要があります。
ファイルの存在 -f ,!-f 演算子により
ディレクトリの存在 -d,!-d演算子により
ファイル・ディレクトリ・シンボリックリンクの存在 -e, !-e 演算子により
実行ファイルの存在 -x,!-x 演算子により

#例
    if ( $request_method = POST ) {
        return 405;
    }
    if ( $http_user_agent ~* MSIE ){
        rewrite ^(.*)$  /msie/$1  break;
    }



Noriyo Kanayama