Nginx Location匹配順序


理論部分

文字釋義匹配規則如下:

略述:

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
不區分大小寫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM