理論部分
文字釋義匹配規則如下:
略述:
1、nginx服務器首先在server塊的多個location塊中搜索是否有標准的uri和請求字符串匹配。如果有多個標准uri可以匹配,就匹配其中匹配度最高的一個location。
2、然后,nginx在使用location塊中,正則uri和請求字符串,進行匹配。如果正則匹配成功,則結束匹配,並使用這個location處理請求;如果正則匹配失敗,則使用標准uri中,匹配度最高的location。
詳細:
1、如果有精確匹配,會先進行精確匹配,匹配成功,立刻返回結果。
2、普通匹配與順序無關,因為按照匹配的長短來取匹配結果。
3、正則匹配與順序有關,因為是從上往下匹配。(首先匹配,就結束解析過程)
4、在location中,有一種統配的location,所有的請求,都可以匹配
標識符匹配規則如下:
(location = uri {}) > (location 完整路徑 {}) > (location ^~ 路徑 {}) > (location ~,~* 正則順序 {}) > (location 部分起始路徑 {}) > (location / {})
操作案例部分
首先,我們把所有的規則寫入nginx.conf,並重新讀取nginx.conf然后開始實驗,這次仍然借助echo-nginx-module進行,(echo-nginx-module配置過程向右看👉echo-nginx-module的安裝、配置、使用)
location = /php.php { echo '精確匹配'; } location ^~ /php/ { echo '標准匹配,僅前綴'; } location ~ \.(php) { echo '區分大小寫,小寫'; } location ~ \.(pHp) { echo '區分大小寫,大寫'; } location ~* \.(php)$ { echo '不區分大小寫';
[root@www quail]# curl 192.168.249.132/php.php 精確匹配 [root@www quail]# curl 192.168.249.132/php/php.php 標准匹配,僅前綴 [root@www quail]# curl 192.168.249.132/pp.php 區分大小寫,小寫 [root@www quail]# curl 192.168.249.132/pp.pHp 區分大小寫,大寫 [root@www quail]# curl 192.168.249.132/php.pHP 不區分大小寫