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