location expression {} 普通匹配,只要 URI 前部分的字符與 expression 相同就算匹配成功;
location ^~ expression {} 普通匹配,只要 URI 前部分字符與 expression 相同就算匹配成功;
location ~ regex {} 正則匹配(區分大小寫);
location ~* regex {} 正則匹配(不區分大小寫);

總結可分為三大類:精準匹配、普通匹配和正則匹配。

匹配邏輯與優先級

對于一個進入 Nginx 的請求來講,其 URI 可能符合多個 location 的匹配條件,但這條請求最終只會被一個 location 邏輯所處理(重定向不算),那么,匹配時肯定有優先級之分。Nginx 的匹配邏輯是這樣的:

1. 執行精準匹配

若請求 URI 與 location = 相匹配(符合精準匹配條件),則執行該 location 的內容,不再進行其他匹配,否則見下一條。

2. 執行普通匹配

接下來 Nginx 會將 URI 與所有普通匹配的 location 進行比較(無論是 ^~ 類型還是無符號類型),然后找出匹配度最高的 location ,若該 location 為 ^~ 類型,則停止匹配,執行該 location 內容;若匹配度最高的 location 為無符號類型,則保留這個無符號 location ,繼續進行下面的正則匹配;若 URI 不符合任何普通匹配 location 的條件,則直接進入下一步。

3. 執行正則匹配

正則的匹配與 location 的順序相關,Nginx 會從上至下進行匹配,若匹配到一個 location ,則執行該 location 邏輯,忽略后面所有的正則 location ,終止匹配;若一個正則都沒匹配上,則執行之前保留的那個無符號 location ,若之前沒有保留,則直接返回 404。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對三五互聯的支持。

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Nginx配置之location的匹配優先級淺析

登錄

找回密碼

注冊