nginx location 匹配規則

2021-07-23 18:09:37 字數 2032 閱讀 6094

原文:

語法規則

location [=|~|~*|^~] /uri/

符號含義=

開頭表示精確匹配

^~開頭表示 uri 以某個常規字串開頭,理解為匹配 url 路徑即可。nginx 不對 url 做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)

~開頭表示區分大小寫的正則匹配

~*開頭表示不區分大小寫的正則匹配

/通用匹配,任何請求都會匹配到

多個 location 配置的情況下匹配順序為(參考資料而來,還未實際驗證,試試就知道了,不必拘泥,僅供參考):

例子,有如下匹配規則:

location /那麼產生的效果如下:

訪問http://localhost/category/id/1111則最終匹配到規則 f,因為以上規則都不匹配,這個時候應該是 nginx **請求給後端應用伺服器,比如 fastcgi(php),tomcat(jsp),nginx 作為反向**伺服器存在。

所以實際使用中,筆者覺得至少有三個匹配規則定義,如下:

# 直接匹配**根,通過網域名稱訪問**首頁比較頻繁,使用這個會加速處理,官網如是說。

# 這裡是直接**給後端應用伺服器了,也可以是乙個靜態首頁

# 第乙個必選規則

location = /

# 第二個必選規則是處理靜態檔案請求,這是 nginx 作為 http 伺服器的強項

# 有兩種配置模式,目錄匹配或字尾匹配,任選其一或搭配使用

# 第三個規則就是通用規則,用來**動態請求到後端應用伺服器

# 非靜態檔案請求就預設是動態請求,自己根據實際把握

# 畢竟目前的一些框架的流行,帶.php、.jsp字尾的情況很少了

location /

rewrite語法

1、下面是可以用來判斷的表示式:

-f 和 !-f 用來判斷是否存在檔案

-d 和 !-d 用來判斷是否存在目錄

-e 和 !-e 用來判斷是否存在檔案或目錄

-x 和 !-x 用來判斷檔案是否可執行

2、下面是可以用作判斷的全域性變數

例:http://localhost:88/test1/test2/test.php?k=v

$host:localhost

$server_port:88

$request_uri:/test1/test2/test.php?k=v

$document_uri:/test1/test2/test.php

$document_root:d:\nginx/html

$request_filename:d:\nginx/html/test1/test2/test.php

redirect 語法
server 

}

防盜煉
location

}

根據檔案型別設定過期時間
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ 

}

禁止訪問某個目錄
location

~* \.(txt|doc)$

nginx location匹配規則

location匹配命令 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,不使用正規表示式,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 進行普通字元精確匹配 定義乙個命名的 location,使用在內部定向時,例如 error pag...

nginx location匹配規則

location匹配命令 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 進行普通字元精確匹配 定義乙個命名的 location,使用在內部定向時,例如 error page,try fil...

nginx location匹配規則

location匹配命令 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 進行普通字元精確匹配 定義乙個命名的 location,使用在內部定向時,例如 error page,try fil...