一、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 / {})
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 不區分大小寫