^~ 辨別符後面跟一個字元串。Nginx将在這個字元串比對後停止進行正規表達式的比對(location指令中正規表達式的比對的結果優先使用),如:location ^~ /images/,你希望對/images/這個目錄進行一些特别的操作,如增加expires頭,防盜鍊等,但是你又想把除了這個目錄的圖檔外的所有圖檔隻進行增加expires頭的操作,這個操作可能會用到另外一個location,例如:location ~* \.(gif|jpg|jpeg)$,這樣,如果有請求/images/1.jpg,nginx如何決定去進行哪個location中的操作呢?結果取決于辨別符^~,如果你這樣寫:location /images/,這樣nginx會将1.jpg比對到location ~* \.(gif|jpg|jpeg)$這個location中,這并不是你需要的結果,而增加了^~這個辨別符後,它在比對了/images/這個字元串後就停止搜尋其它帶正則的location。
= 表示精确的查找位址,如location = /它隻會比對uri為/的請求,如果請求為/index.html,将查找另外的location,而不會比對這個,當然可以寫兩個location,location = /和location /,這樣/index.html将比對到後者,如果你的站點對/的請求量較大,可以使用這個方法來加快請求的響應速度。
@ 表示為一個location進行命名,即自定義一個location,這個location不能被外界所通路,隻能用于Nginx産生的子請求,主要為error_page和try_files。
~ 為區分大小寫的比對。
~* 不區分大小寫的比對(比對firefox的正則同時比對FireFox)。
!~ 不比對的
!~* 不比對的
. 比對除換行符以外的任意字元
\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這幾個字母以外的任意字元
捕獲 (exp) 比對exp,并捕獲文本到自動命名的組裡
(?<name>exp) 比對exp,并捕獲文本到名稱為name的組裡,也可以寫成(?'name'exp)
(?:exp) 比對exp,不捕獲比對的文本,也不給此分組配置設定組号
零寬斷言 (?=exp) 比對exp前面的位置
(?<=exp) 比對exp後面的位置
(?!exp) 比對後面跟的不是exp的位置
(?<!exp) 比對前面不是exp的位置
注釋 (?#comment) 這種類型的分組不對正規表達式的處理産生任何影響,用于提供注釋讓人閱讀
本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1867780如需轉載請自行聯系原作者
qianghong000