摘要:首先,首先會檢查所有的前綴,從中選出最長前綴匹配也就是修飾符后面的路徑最長的的并記下。然后,如果存在正則時,按照其出現的順序,依次匹配,找到匹配的正則就不再繼續往下,并選擇該作為最終的結果。
場景:
在項目開發中經常會遇到nginx配置文件中,會有很多條location配置,卻讀不懂其中的含義而煩惱Location是什么?
Location是Nginx中的塊級指令(block directive),Location基本語法
通過配置Location指令塊,可以決定客戶端發過來的請求URI如何處理(是映射到本地文件還是轉發出去)及被哪個location處理
Location基本匹配規則修飾符(modifier) location [ = | ~ | ~* | ^~ ] uri { ... } location根據不同的修飾符可以分為兩大類 1. 前綴location(prefix location): 無修飾符的普通location 帶=的精準匹配location 帶^~的非正則表達式location 2.正則表達式location(regular expressions location): ~ 區分大小寫的正則location ~* 不區分大小寫的正則location
匹配規則是指當請求到達nginx時,nginx如何決定該使用哪條location。
首先,nginx首先會檢查所有的前綴location,從中選出最長前綴匹配(也就是修飾符后面的路徑最長的)的location并記下。Location特殊匹配規則1然后,如果存在正則location時,按照其出現的順序,依次匹配URI,找到匹配的正則location就不再繼續往下,并選擇該location作為最終的結果。(劃重點:正則location出現的順序很重要)
如果最長前綴匹配location的修飾符是^~時,就不會檢查正則location了,直接選擇該location為最終locationLocation特殊匹配規則2
如果存在精準匹配location,且請求的uri跟其完全匹配,選擇該精準匹配location作為最終的location測試下自己的理解是否準確:
下面是一個location配置參考,以及不同的請求uri到達nginx時會執行的規則
location = / { [ configuration A ] } location / { [ configuration B ] } location /documents/ { [ configuration C ] } location ^~ /images/ { [ configuration D ] } location ~* .(gif|jpg|jpeg)$ { [ configuration E ] } 請求URI 執行的規則 / A /index.html B /documents/document.html C /images/1.gif D /documents/1.jpg E參考文獻:
[Nginx官網location解釋][1]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39770.html
摘要:我備案了個域名,買了一個阿里云服務器,想要搭建幾個自己的網站,難免要接觸。創建軟鏈接假如我們每個網站程序放在一個文件夾里,該程序的配置文件也應該放在這個文件夾里才方便管理。 我備案了個域名,買了一個阿里云服務器,想要搭建幾個自己的網站,難免要接觸 nginx。 那么我用 nginx 來干嘛呢: 靜態資源反向代理 將域名泛解析到服務器之后,通過 nginx 來給不同的二級域名分配服務器...
摘要:我備案了個域名,買了一個阿里云服務器,想要搭建幾個自己的網站,難免要接觸。創建軟鏈接假如我們每個網站程序放在一個文件夾里,該程序的配置文件也應該放在這個文件夾里才方便管理。 我備案了個域名,買了一個阿里云服務器,想要搭建幾個自己的網站,難免要接觸 nginx。 那么我用 nginx 來干嘛呢: 靜態資源反向代理 將域名泛解析到服務器之后,通過 nginx 來給不同的二級域名分配服務器...
摘要:所以到目前為止,基本可以肯定是的上出了一些問題。問題解決因篇幅有限,為了直面本次問題的核心,我不再貼出完整的配置,我簡化此次問題的模型。 這是五個小時與一個字符的戰斗 是的,作為一個程序員,你往往發現,有的時候你花費了數小時,數天,甚至數星期來查找問題,但最終可能只花費了數秒,改動了數行,甚至幾個字符就解決了問題。這次給大家分享一個困擾了我很久,我花了五個小時才查找出問題原因...
摘要:調試的配置標簽空格分隔調試配置注該文原文是默認,僅僅記錄標準錯誤日志到默認的文件中,或是被指令指定的文件中。重要對于配置文件的任何改變,你都必須測試和重載的配置文件來讓變更生效。將記錄最大的消息。 調試 Nginx 的配置 標簽(空格分隔): Nginx 調試 Debuging 配置 注:該文原文是 Debugging Nginx Configuration 默認,Ng...
摘要:反向代理要說反向代理,我們就先要理解正向代理下面我們就談談正向代理和反向代理吧。客戶端才能使用正向代理。反向代理總結就一句話代理端代理的是服務端。因此,動態資源轉發到服務器我們就使用到了前面講到的反向代理了。 反向代理 要說反向代理,我們就先要理解正向代理 ,下面我們就談談正向代理和反向代理吧。 正向代理 一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始...
閱讀 3170·2023-04-25 19:09
閱讀 3881·2021-10-22 09:54
閱讀 1755·2021-09-29 09:35
閱讀 2912·2021-09-08 09:45
閱讀 2248·2021-09-06 15:00
閱讀 2771·2019-08-29 15:32
閱讀 1034·2019-08-28 18:30
閱讀 372·2019-08-26 13:43