Nginx配置之location的匹配優(yōu)先級淺析
前言
Nginx 配置中的 server 塊中的 location 用來匹配請求 URI,以便對不通的 URI 進(jìn)行不通的處理。
location 類型 和 成功匹配的條件
- location = expression {} 精準(zhǔn)匹配,只有 URI 和 expression 完全相同,才算匹配成功;
- location expression {} 普通匹配,只要 URI 前部分的字符與 expression 相同就算匹配成功;
- location ^~ expression {} 普通匹配,只要 URI 前部分字符與 expression 相同就算匹配成功;
- location ~ regex {} 正則匹配(區(qū)分大小寫);
- location ~* regex {} 正則匹配(不區(qū)分大小寫);
總結(jié)可分為三大類:精準(zhǔn)匹配、普通匹配和正則匹配。
匹配邏輯與優(yōu)先級
對于一個進(jìn)入 Nginx 的請求來講,其 URI 可能符合多個 location 的匹配條件,但這條請求最終只會被一個 location 邏輯所處理(重定向不算),那么,匹配時肯定有優(yōu)先級之分。Nginx 的匹配邏輯是這樣的:
1. 執(zhí)行精準(zhǔn)匹配
若請求 URI 與 location = 相匹配(符合精準(zhǔn)匹配條件),則執(zhí)行該 location 的內(nèi)容,不再進(jìn)行其他匹配,否則見下一條。
2. 執(zhí)行普通匹配
接下來 Nginx 會將 URI 與所有普通匹配的 location 進(jìn)行比較(無論是 ^~ 類型還是無符號類型),然后找出匹配度最高的 location ,若該 location 為 ^~ 類型,則停止匹配,執(zhí)行該 location 內(nèi)容;若匹配度最高的 location 為無符號類型,則保留這個無符號 location ,繼續(xù)進(jìn)行下面的正則匹配;若 URI 不符合任何普通匹配 location 的條件,則直接進(jìn)入下一步。
3. 執(zhí)行正則匹配
正則的匹配與 location 的順序相關(guān),Nginx 會從上至下進(jìn)行匹配,若匹配到一個 location ,則執(zhí)行該 location 邏輯,忽略后面所有的正則 location ,終止匹配;若一個正則都沒匹配上,則執(zhí)行之前保留的那個無符號 location ,若之前沒有保留,則直接返回 404。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
Linux下Tomcat+Nginx服務(wù)器環(huán)境安裝配置的簡明教程
以Nginx作為反向代理再用Tomcat驅(qū)動Java Web程序是當(dāng)今很流行的一種方案,那么這里我們就著眼于最基本的生產(chǎn)環(huán)境搭建,一起來看一下Linux下Tomcat+Nginx服務(wù)器環(huán)境安裝配置的簡明教程2016-05-05
Nginx+Tomcat負(fù)載均衡集群的實現(xiàn)示例
本文主要介紹了Nginx + Tomcat負(fù)載均衡集群的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
詳解基于centos7搭建Nginx網(wǎng)站服務(wù)器(包含虛擬web主機(jī)的配置)
這篇文章主要介紹了詳解基于centos7搭建Nginx網(wǎng)站服務(wù)器(包含虛擬web主機(jī)的配置),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
nginx服務(wù)器中access_log日志分析與配置詳解
通過訪問日志,可以知曉用戶的地址,網(wǎng)站的哪些部分最受歡迎,用戶的瀏覽時間,對大多數(shù)用戶用的的瀏覽器做出針對性優(yōu)化。下面這篇文章主要給大家介紹了關(guān)于nginx服務(wù)器中access_log日志分析與配置的相關(guān)資料,需要的朋友可以參考下。2017-12-12
Nginx中配置開啟Nginx Status來查看服務(wù)器運行狀態(tài)
這篇文章主要介紹了Nginx中配置開啟Nginx Status來查看服務(wù)器運行狀態(tài)的方法,Nginx Status為Nginx服務(wù)器內(nèi)置的狀態(tài)頁,需要的朋友可以參考下2016-01-01

