天天看點

nginx if配置說明

格式: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 語句;
}      

繼續閱讀