August 20, 2013 · Server

if文の判定記号

今回は、Nginxの設定の話をします。

Nginxは、Apacheと違い if文が使えます。
ただ、独特な判定記号があるので
それを全て紹介していきたいと思います。

皆さんも、if文は多く使う事になると思います
それは、rewrite可否の判定だったり
動的・静的コンテンツの判断だったり

または、モバイル対応だったりと Nginxのif文で
悩んだら参考にして頂ければと思います。

※if文は、server及びlocationディレクティブ内でしか使えません
ifの後にはスペースが必要です
守らないと以下の構文エラーが出ます

# nginx: [emerg] unknown directive "if(A =B" in /etc/nginx/nginx.conf:12
if (    構文OK  
if(     構文NG  

基本構文は、こんな感じになりますね。

if (A = B) {  
    ~処理~
}

また、多種多様な、判定記号は、以下のようになっています。

~    BがAに含まれるか  
!~   BがAに含まれないか  
~*   BがAに含まれるか(大文字小文字を問わず)  
!~*  BがAに含まれないか(大文字小文字を問わず)  
=    AとBが完全一致か  
!=   AとBが異なるか  
-f   ファイルが存在するか  
!-f  ファイルが存在しないか  
-d   ディレクトリが存在するか  
!-d  ディレクトリが存在しないか  
-e   ファイル、ディレクトリ、またはシンボリックリンクが存在するか  
!-e   ファイル、ディレクトリ、またはシンボリックリンクが存在しないか  
-x    実行可能であるか  
!-x   実行不可であるか  

参考 http://wiki.nginx.org/HttpRewriteModule#if