nginx中的if語句

 

if指令

格式:if (條件判斷) { 具體的rewrite規則 }

一、if語句中的判斷條件(nginx)

1、正則表達式匹配:

==:等值比較;

~:與指定正則表達式模式匹配時返回“真”,判斷匹配與否時區分字符大小寫;

~*:與指定正則表達式模式匹配時返回“真”,判斷匹配與否時不區分字符大小寫;

!~:與指定正則表達式模式不匹配時返回“真”,判斷匹配與否時區分字符大小寫;

!~*:與指定正則表達式模式不匹配時返回“真”,判斷匹配與否時不區分字符大小寫;

 

2、文件及目錄匹配判斷:

-f, !-f:判斷指定的路徑是否爲存在且爲文件;

-d, !-d:判斷指定的路徑是否爲存在且爲目錄;

-e, !-e:判斷指定的路徑是否存在,文件或目錄均可;

-x, !-x:判斷指定路徑的文件是否存在且可執行;
 

示例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 語句;
}

示例5

if (!-f $request_filename) {
        return 414;
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章