1. 程式人生 > >Nginx 路徑匹配規則,萬用字元

Nginx 路徑匹配規則,萬用字元

Nginx路徑匹配符號

  • = 表示精確匹配
  • ^~ 表示uri以某個常規字串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
  • ~ 正則匹配(區分大小寫)
  • ~* 正則匹配(不區分大小寫)
  • !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配 的正則
  • / 任何請求都會匹配

符號的優先順序

首先匹配 =,其次匹配^~, 其次是按檔案中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。

例子,有如下匹配規則:

location = / {  
   #規則A  
} location = /login { #規則B } location ^~ /static/ { #規則C } location ~ \.(gif|jpg|png|js|css)$ { #規則D } location ~* \.png$ { #規則E } location !~ \.xhtml$ { #規則F } location !~* \.xhtml$ { #規則G } location / { #規則H }

訪問 http://localhost/a.xhtml

不會匹配規則F和規則G,http://localhost/a.XHTML不會匹配規則G,因為不區分大小寫。規則F,規則G屬於排除法,符合匹配規則但是不會匹配到,所以想想看實際應用中哪裡會用到。

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

簡單通用配置

靜態動態分離,除了靜態資源以外的請求都交給Tomcat處理.

location / {  
    proxy_pass http://localhost:8080
} location ^~ /static/ { root /webroot/static/; } location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /webroot/res/; }

相關推薦

Nginx 路徑匹配規則,字元

Nginx路徑匹配符號 = 表示精確匹配 ^~ 表示uri以某個常規字串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。 ~ 正則匹配(區分

python匹配linux字元

有時候需要匹配linux中的萬用字元,例如*和?,它們的含義為:     *:匹配0個或多個字元;     ?:匹配任意單個字元。 這和正則表示式中含義不一樣,在正則表示式中:     *:匹配前一個字元0次或者多次;    &n

linux檔名匹配字元使用)

      當在使用命令列時,有很多時間都用來查詢你所需要的檔案,如ls find等。 S h e l l提供了一套完整的字串模式匹配規則,或者稱之為元字元,當s h e l l遇到上述字元時,就會把它們當作特殊字元,而不是檔名中的普通字元,這樣使用者就可以用它們來匹配相應的

Nginx 路徑符號匹配規則字元

1,Nginx路徑符號匹配介紹: = 表示精確匹配 ^~ 表示uri以某個常規字串開頭,大多情況下用來匹配url路徑,nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。 ~ 正則匹配(

Leetcode 44:字元匹配(超詳細的解法!!!)

給定一個字串 (s) 和一個字元模式 (p) ,實現一個支援 '?' 和 '*' 的萬用字元匹配。 '?' 可以匹配任何單個字元。 '*' 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹配成功。 說明: s 可能為空,且只包含從 a-z 的小寫字母。

[Luogu P3167] [BZOJ 3507] [CQOI2014]字元匹配

洛谷傳送門 BZOJ傳送門 題目描述 幾乎所有作業系統的命令列介面(CLI)中都支援檔名的萬用字元匹配以方便使用者。最常見的萬用字元有兩個,一個是星號(*),可以匹配 0

D-動態規劃比遞迴快-LeetCode44-字元匹配

題目 給定一個字串 (s) 和一個字元模式 (p) ,實現一個支援 '?' 和 '*' 的萬用字元匹配。 '?' 可以匹配任何單個字元。 '*' 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹配成功。 說明: s 可能為空,且只包含從 a-z 的小寫字母。 p 可能為空,且只包含

字元匹配

給定一個字串 (s) 和一個字元模式 § ,實現一個支援 ‘?’ 和 ‘*’ 的萬用字元匹配。 ‘?’ 可以匹配任何單個字元。 ‘*’ 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹配成功。 說明: s 可能為空,且只包含從 a-z 的小寫字母。 p 可能為空,且只包含

leetcode 44. 字元匹配

給定一個字串 (s) 和一個字元模式 (p) ,實現一個支援 '?' 和 '*' 的萬用字元匹配。 '?' 可以匹配任何單個字元。 '*' 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹

【leetCode】44_字元匹配

dp: class Solution { public: bool isMatch(string s, string p) { //tag 用於dp,tag[i][j]代表s的子串s[0,i-1] 可以匹配 p的子串p[0,j-1]。

【LeetCode】44. 字元匹配

題目描述 思路(與10. 正則表示式匹配類似) dp[ i ][ j ] 表示 s 的前 i 個字元與 p 的前 j 個字元的匹配結果。 先寫邊界情況,再寫 dp 方程,若 p[ j - 1] 為 * ,dp[ i ][ j ] = dp[ i - 1][ j

leetcode 44 ---- 動態規劃(困難) :字元匹配(java)

1.  問題:給定一個字串 (s) 和一個字元模式 (p) ,實現一個支援 '?' 和 '*' 的萬用字元匹配。 '?' 可以匹配任何單個字元。 '*' 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹配成功。 說明: s 可能為空,且只包含從 a-z 的小

spring單元測試報錯:字元匹配很全面, 但無法找到元素 'tx:advice' 的宣告。

報錯:Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 54 in XML document from class path resource [app

字元匹配_講解和python3實現

題目描述 給定一個字串 (s) 和一個字元模式 § ,實現一個支援 ‘?’ 和 ‘*’ 的萬用字元匹配。 ‘?’ 可以匹配任何單個字元。 ‘*’ 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹配成功。 說明: s 可能為空,且只包含從 a-z 的小寫字母。 p 可能

LeetCode 10 & 44 正則表示式匹配 & 字元匹配 字串匹配問題

10 正則表示式匹配 給定一個字串 (s) 和一個字元模式 (p)。實現支援 ‘.’ 和 ‘*’ 的正則表示式匹配。 ‘.’ 匹配任意單個字元。 ‘*’ 匹配零個或多個前面的元素。 匹配應該覆蓋整個字串 (s) ,而不是部分字串。 說明: s 可能為

使用泛型Generics和字元來完成父子類List物件的型別匹配

基本格式 參考:參考文章1 參考文章2     //萬用字元實現 public List<Animal> find(List<? extends Animal> animals, Animal animal){

44. 字元匹配

給定一個字串 (s) 和一個字元模式 (p) ,實現一個支援 '?' 和 '*' 的萬用字元匹配。 '?' 可以匹配任何單個字元。 '*' 可以匹配任意字串(包括空字串)。 兩個字串完全匹配才算匹配成功。 說明: s 可能為空,且只包含從 a-z 的小寫字母。 p

LintCode (192)字元匹配

題目 判斷兩個可能包含萬用字元“?”和“*”的字串是否匹配。匹配規則如下: '?' 可以匹配任何單個字元。 '*' 可以匹配任意字串(包括空字串)。 兩個串完全匹配才算匹配成功。 函式介面如下: bool isMatch(const char *s, const

python-進階教程-利用字元進行字串匹配

0.摘要 在Linux Shell中,我們可以用ls *.py的命令顯示所有以.py結尾的檔案或資料夾。在python中我們可以藉助fnmatch模組,實現含萬用字元的字串匹配。   1.常用萬用字元 符號 作用

在mySQl中,SQL語言允許使用字元進行字串匹配的操作,其中“%”不能表示()。A.0個字元B.一個字元C.多個字元D.搜尋關鍵字中包含字元“%”

加粗樣式@TOC 歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯