格式:if
條件舉例:
條件判斷語句由Nginx内置變量、邏輯判斷符号和目标字元串三部分組成。
其中,内置變量是Nginx固定的非自定義的變量,如,$request_method, $request_uri等。
邏輯判斷符号,有=, !=, ~, ~*, !~, !~*
!表示相反的意思,~為比對符号,它右側為正規表達式,區分大小寫,而~*為不區分大小寫比對。
目标字元串可以是正規表達式,通常不用加引号,但表達式中有特殊符号時,比如空格、花括号、分号等,需要用單引号引起來。
示例1:
if ($request_method = POST) //當請求的方法為POST時,直接傳回405狀态碼
{
return 405; //在該示例中并未用到rewrite規則,if中支援用return指令。
示例2:
if ($http_user_agent ~ MSIE) //user_agent帶有MSIE字元的請求,直接傳回403狀态碼
{
return 403;
}
如果想同時限制多個user_agent,還可以寫成這樣
if ($http_user_agent ~ "MSIE|firefox|spider")
{
return 403;
}
示例3:
if(!-f $request_filename) //當請求的檔案不存在,将會執行下面的rewrite規則
{
rewrite 語句;
}
示例4:
if($request_uri ~* 'gid=\d{9,12}/') //\d表示數字,{9,12}表示數字出現的次數是9到12次,如gid=123456789/就是符合條件的。
{
rewrite 語句;
}