nginx location指令語法詳解
阿新 • • 發佈:2018-12-07
語法規則:
location [=|~|~*|^~] /uri/ { … }
- = 開頭表示精確匹配
- ^~ 開頭表示uri以某個常規字串開頭, 如果把這個字首用於一個常規字串,那麼告訴nginx 如果路徑匹配那麼不測試正則表示式。nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
- ~ 開頭表示區分大小寫的正則匹配
- ~* 開頭表示不區分大小寫的正則匹配
- !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配 的正則
- / 通用匹配,任何請求都會匹配到。
location的匹配順序:
- 先進行精準匹配,如果命中,會直接返回並終止解析過程
- 進行一般匹配,如果沒有命中結果,直接進行下一步;如果命中一個,記錄該匹配結果,如果命中多個,記錄
匹配最長的結果
,然後繼續解析。 - 進行正則匹配(正則匹配是從上到下的順序匹配),一旦命中匹配,則直接返回匹配結果並停止解析;如果沒有命中且第二部中有記錄的匹配結果,則返回第二步記錄的匹配結果。
正則規則
表示式 | 含義 |
---|---|
. | 匹配除換行符以外的任意字元 |
\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這幾個字母以外的任意字元 |