高效能Web伺服器Nginx的配置與部署研究(16)小議location匹配模式優先順序
高效能Web伺服器Nginx的配置與部署研究(16)小議location匹配模式優先順序
- Author: 柳大·Poechant(鍾超)
- Email: zhongchao.ustc#gmail.com(#->@)
- Blog:Blog.CSDN.net/Poechant
- Date: June 20th, 2012
1 location 的匹配符
1.1 等於匹配符:=
等於匹配符就是等號,特點可以概括為兩點:
- 精確匹配
- 不支援正規表示式
1.2 空匹配符
空匹配符的特點是:
- 匹配以指定模式開始的 URI
- 不支援正規表示式
1.3 正則匹配符:~
正則匹配符是可以使用正規表示式的匹配符。不過這裡要強調的是,一般來說~
是指:
區分大小寫的正則匹配
而~*
表示:
不區分大小寫的正則匹配
但是對於一些對大小寫不敏感的作業系統,這兩者沒有區別。另外一個就是^~
,其表示以指定模式開始的正則匹配。
1.4 內部訪問符:@
一般用於錯誤頁面等,這個暫不討論。
2 匹配符優先順序
=
- 空匹配符,滿足精確匹配時
^~
-
~
或~*
- 空匹配符,滿足以指定模式開始時的匹配時
這樣說比較抽象,我們來看例子吧。
2.1 等於匹配符與精確匹配時的空匹配符
看下面的例子(用到我們此前一起完成的Hello World
模組):
location /poechant {
hello_world no1;
}
location = /poechant {
hello_world no2;
}
如果我們的請求是http://my.domian/poechant
,則我們發現兩個location
都與請求的 URI 匹配,這時根據我們的優先順序順序,第一個是精確匹配時的空匹配符,第二個是等於匹配符,所以第二個的優先順序高,也就是應該輸出:
hello_world, no2
同時也說明 Nginx 的 locatoin 不是按照配置檔案中的書寫順序來匹配的。
2.2 精確匹配時的空匹配符與正則匹配的^~
下面這個例子中,兩者開始都精確匹配了,連這個正則匹配都是精確匹配。
location ^~ ^/poechant$ {
hello_world no1;
}
location /poechant {
hello_world no2;
}
匹配哪一個?你測試一下,會得到:
hello_world, no2
與我們上面說的優先順序順序相吻合。
2.3 其他匹配優先順序比較的例項
略
-
柳大·Poechant:Blog.CSDN.net/Poechant
-
相關文章
- nginx的location匹配順序、優先順序,location對映衝突排查Nginx
- Nginx的location規則:優先順序和路徑替換Nginx
- NTP時間伺服器優先順序配置伺服器
- spring不同配置方式的區別與優先順序Spring
- SpringBoot配置檔案優先順序載入順序Spring Boot
- Yarn任務優先順序配置Yarn
- 華為路由協議優先順序路由協議
- CSS優先順序CSS
- 【pytest】fixture 與 setup, teardown 的優先順序
- Web 效能優化:Preload與Prefetch的使用及在 Chrome 中的優先順序Web優化Chrome
- 運算子的優先順序
- python運算子及優先順序順序Python
- 中斷優先順序
- Yacc使用優先順序
- Android程式優先順序Android
- 美團二面:SpringBoot讀取配置優先順序順序是什麼?Spring Boot
- nginx location匹配規則Nginx
- Nginx Location 路徑匹配Nginx
- [譯]HTTP/2的優先順序HTTP
- 深入探究.Net Core Configuration讀取配置的優先順序
- SQL 優先順序join>whereSQL
- java運算子優先順序Java
- Spring Boot、Nacos配置檔案properties、yml、yaml的優先順序Spring BootYAML
- CSS 選擇器的優先順序CSS
- 設計中的優先順序(下)
- SAP UI configuration determination的優先順序UI
- 設計中的優先順序(上)
- 測試用例的優先順序
- 徹底弄懂 Nginx location 匹配Nginx
- Nginx Location 配置Nginx
- nginx的location 規則匹配練習Nginx
- 一文弄懂Nginx的location匹配Nginx
- C++運算子優先順序C++
- ansible 變數優先順序示例變數
- java setPriority()設定優先順序Java
- 封裝優先順序佇列封裝佇列
- css 選擇器優先順序CSS
- nginx的location優化Nginx優化
- 【分享】如何評估 bug 的優先順序