1. 程式人生 > >nginx location指令語法詳解

nginx location指令語法詳解

語法規則:

 location [=|~|~*|^~] /uri/ { … }
  1. = 開頭表示精確匹配
  2. ^~ 開頭表示uri以某個常規字串開頭, 如果把這個字首用於一個常規字串,那麼告訴nginx 如果路徑匹配那麼不測試正則表示式。nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
  3. ~ 開頭表示區分大小寫的正則匹配
  4. ~* 開頭表示不區分大小寫的正則匹配
  5. !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配 的正則
  6. / 通用匹配,任何請求都會匹配到。

location的匹配順序:

  1. 先進行精準匹配,如果命中,會直接返回並終止解析過程
  2. 進行一般匹配,如果沒有命中結果,直接進行下一步;如果命中一個,記錄該匹配結果,如果命中多個,記錄匹配最長的結果,然後繼續解析。
  3. 進行正則匹配(正則匹配是從上到下的順序匹配),一旦命中匹配,則直接返回匹配結果並停止解析;如果沒有命中且第二部中有記錄的匹配結果,則返回第二步記錄的匹配結果。

正則規則

表示式 含義
. 匹配除換行符以外的任意字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字串的開始
$ 匹配字串的結束
* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
{n} 重複n次
{n,} 重複n次或更多次
{n,m} 重複n到m次
*? 重複任意次,但儘可能少重複
+? 重複1次或更多次,但儘可能少重複
?? 重複0次或1次,但儘可能少重複
{n,m}? 重複n到m次,但儘可能少重複
{n,}? 重複n次以上,但儘可能少重複
\W 匹配任意不是字母,數字,下劃線,漢字的字元
\S 匹配任意不是空白符的字元
\D 匹配任意非數字的字元
\B 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x以外的任意字元
[^aeiou] 匹配除了aeiou這幾個字母以外的任意字元