Nginx Location匹配順序

理論部分

文字釋義匹配規則以下:

略述:

一、nginx服務器首先在server塊的多個location塊中搜索是否有標準的uri和請求字符串匹配。若是有多個標準uri能夠匹配,就匹配其中匹配度最高的一個location。php

二、而後,nginx在使用location塊中,正則uri和請求字符串,進行匹配。若是正則匹配成功,則結束匹配,並使用這個location處理請求;若是正則匹配失敗,則使用標準uri中,匹配度最高的location。html

詳細:

一、若是有精確匹配,會先進行精確匹配,匹配成功,馬上返回結果。nginx

二、普通匹配與順序無關,由於按照匹配的長短來取匹配結果。服務器

三、正則匹配與順序有關,由於是從上往下匹配。(首先匹配,就結束解析過程)curl

四、在location中,有一種統配的location,全部的請求,均可以匹配url

標識符匹配規則以下:

(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
不區分大小寫
相關文章
相關標籤/搜索