最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx 配置location匹配規(guī)則實例講解

 更新時間:2020年03月11日 14:31:06   作者:tonysengj  
在本篇文章里小編給大家整理的是關(guān)于nginx 配置location匹配規(guī)則實例講解內(nèi)容,需要的朋友們學(xué)習(xí)下。

nginx的配置指令的作用域可以分為 main,server,location這3個種,實際上這3者不是依次包含的關(guān)系,而是相互獨立的關(guān)系,比如一個只具有main級別作用域的指令,是不能寫在某個server或者location內(nèi)的,模塊的某個指令可以同時具有main,server,location這3種作用域,另外每個模塊有 main,srv,loc這3個級別的配置,一個模塊的main級別的配置對所有的server和location都是共享的,srv級別的配置對所有 location都是共享的,location只有自己獨立的loc級別的配置,這就是為什么一個模塊的srv和loc級別的配置需要merge,而 main級別的配置不需要merge的原因。這里看起來有點繞,區(qū)分一下main,server,location分別作為一種作用域級別和一個主體,類似于形容詞和名字的區(qū)別,nginx的配置關(guān)系還是不難理解的。

​一般來說一個請求url過來,nginx會將它解析到某一個location來處理。這個解析的過程實際上根據(jù)location的配置基本可以分為字符串匹配和正則表達(dá)式匹配這2種。對于location的組織方式,最簡單的就是直接將它們保存為一個鏈表,解析url的時候一個一個遍歷即可找到相應(yīng)location,但是這樣效率太低,對像nginx這種高性能的服務(wù)器來說是完全不可取的,nginx將字符串匹配的location組織成了一個三叉的字符串排序樹,而且建立的時候也考慮了樹的平衡性。文章后面我講詳細(xì)介紹源碼的實現(xiàn)。

​首先我來大概的介紹一下location的種類和匹配規(guī)則,以nginx wiki(http://wiki.nginx.org/HttpCoreModule#location)的例子做說明:

location 優(yōu)先級官方文檔

  • Directives with the = prefix that match the query exactly. If found, searching stops.
  • All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
  • Regular expressions, in order of definition in the configuration file.
  • If #3 yielded a match, that result is used. Else the match from #2 is used.

=前綴的指令嚴(yán)格匹配這個查詢。如果找到,停止搜索。

所有剩下的常規(guī)字符串,最長的匹配。如果這個匹配使用^〜前綴,搜索停止。

正則表達(dá)式,在配置文件中定義的順序。

如果第3條規(guī)則產(chǎn)生匹配的話,結(jié)果被使用。否則,如同從第2條規(guī)則被使用。

例如

location = / { 
 # 只匹配"/". 
 [ configuration A ]  
} 
location / { 
 # 匹配任何請求,因為所有請求都是以"/"開始 
 # 但是更長字符匹配或者正則表達(dá)式匹配會優(yōu)先匹配 
 [ configuration B ]  
} 
location ^~ /images/ { 
 # 匹配任何以 /images/ 開始的請求,并停止匹配 其它location 
 [ configuration C ]  
} 
location ~* \.(gif|jpg|jpeg)$ { 
 # 匹配以 gif, jpg, or jpeg結(jié)尾的請求.  
 # 但是所有 /images/ 目錄的請求將由 [Configuration C]處理.   
 [ configuration D ]  
} 

可以看到上面的例子中有5種不同類型的location,其中第4個帶 “~” 號前綴的為需要正則匹配的location,nginx在進(jìn)行url解析時對這5種不同類型的location具有不同的優(yōu)先級規(guī)則,大致的規(guī)則如下:

1,字符串精確匹配到一個帶 “=” 號前綴的location,則停止,且使用這個location的配置;

2,字符串匹配剩下的非正則和非特殊location,如果匹配到某個帶 "^~" 前綴的location,則停止;

3,正則匹配,匹配順序為location在配置文件中出現(xiàn)的順序。如果匹配到某個正則location,則停止,并使用這個location的配置;否則,使用步驟2中得到的具有最大字符串匹配的location配置。

​例如,對下面的請求有:

1, / -> 精確匹配到第1個location,匹配停止,使用configuration A

2,/some/other/url -> 首先前綴部分字符串匹配到了第2個location,然后進(jìn)行正則匹配,顯然沒有匹配上,則使用第2個location的配置configurationB

3,/images /1.jpg -> 首先前綴部分字符串匹配到了第2個location,但是接著對第3個location也前綴匹配上了,而且這時已經(jīng)是配置文件里面對這個url的最大字符串匹配了,并且location帶有 "^~" 前綴,則不再進(jìn)行正則匹配,最終使用configuration C

4,/some/other/path/to/1.jpg -> 首先前綴部分同樣字符串匹配到了第2個location,然后進(jìn)行正則匹配,這時正則匹配成功,則使用congifuration D

請求URI例子:

/ -> 符合configuration A
/documents/document.html -> 符合configuration B
/images/1.gif -> 符合configuration C
/documents/1.jpg ->符合 configuration D
@location 例子
error_page 404 = @fetch;

location @fetch(
proxy_pass http://fetch;
)

location匹配命令

  • ~ #波浪線表示執(zhí)行一個正則匹配,區(qū)分大小寫
  • ~* #表示執(zhí)行一個正則匹配,不區(qū)分大小寫
  • ^~ #^~表示普通字符匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄
  • = #進(jìn)行普通字符精確匹配
  • @ #"@" 定義一個命名的 location,使用在內(nèi)部定向時,例如 error_page, try_files

location 匹配的優(yōu)先級(與location在配置文件中的順序無關(guān))

= 精確匹配會第一個被處理。如果發(fā)現(xiàn)精確匹配,nginx停止搜索其他匹配。

普通字符匹配,正則表達(dá)式規(guī)則和長的塊規(guī)則將被優(yōu)先和查詢匹配,也就是說如果該項匹配還需去看有沒有正則表達(dá)式匹配和更長的匹配。

^~ 則只匹配該規(guī)則,nginx停止搜索其他匹配,否則nginx會繼續(xù)處理其他location指令。

最后匹配理帶有"~"和"~*"的指令,如果找到相應(yīng)的匹配,則nginx停止搜索其他匹配;當(dāng)沒有正則表達(dá)式或者沒有正則表達(dá)式被匹配的情況下,那么匹配程度最高的逐字匹配指令會被使用。

到此這篇關(guān)于nginx 配置location匹配規(guī)則實例講解的文章就介紹到這了,更多相關(guān)nginx 配置location匹配規(guī)則內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 18個運維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢)

    18個運維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢)

    這篇文章主要介紹了18個運維必知的Nginx代理緩存配置技巧(你都掌握了哪些呢),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Nginx中proxy_pass的斜杠的兩種方式

    Nginx中proxy_pass的斜杠的兩種方式

    Nginx的官方文檔將proxy_pass分為不帶URI和帶URI兩種類型,本文就來介紹Nginx中proxy_pass的斜杠的兩種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • Windows?Server?Nginx?反向代理Spring?Boot配置無效報404未找到的問題

    Windows?Server?Nginx?反向代理Spring?Boot配置無效報404未找到的問題

    一個Spring?Boot的系統(tǒng),開發(fā)完成發(fā)布到Windows服務(wù)器里,使用nginx作為反向代理,修改刷新配置文件,nginx.conf,總是報錯404,這篇文章主要介紹了Windows?Server?Nginx?反向代理Spring?Boot配置無效?404?未找到的問題及解決方案
    2024-01-01
  • Nginx端口映射配置方法

    Nginx端口映射配置方法

    這篇文章主要介紹了Nginx端口映射配置方法和多端口映射,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Nginx加固的幾種方式(控制超時時間&限制客戶端下載速度&并發(fā)連接數(shù))

    Nginx加固的幾種方式(控制超時時間&限制客戶端下載速度&并發(fā)連接數(shù))

    本文主要介紹了Nginx加固的幾種方式,包括控制超時時間,限制客戶端下載速度,并發(fā)連接數(shù)這幾種方式,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Nginx服務(wù)器搭建和基本配置詳解

    Nginx服務(wù)器搭建和基本配置詳解

    這篇文章主要介紹了Nginx服務(wù)器搭建和基本配置詳解,Nginx是事件驅(qū)動的高性能服務(wù)器,需要的朋友可以參考下
    2015-09-09
  • Nginx session丟失問題處理解決方法

    Nginx session丟失問題處理解決方法

    這篇文章主要介紹了Nginx session丟失問題處理解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Ubuntu16.04.1 安裝Nginx的方法

    Ubuntu16.04.1 安裝Nginx的方法

    這篇文章主要介紹了Ubuntu16.04.1 安裝Nginx的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • Nginx前端頁面刷新后出現(xiàn)404的原因與解決方案

    Nginx前端頁面刷新后出現(xiàn)404的原因與解決方案

    這篇文章主要來為大家詳細(xì)介紹一下Nginx前端頁面刷新后出現(xiàn)404 Not Found的原因與對應(yīng)的解決方案,有需要的小伙伴可以根據(jù)情況參考一下
    2025-03-03
  • nginx配置支持https的示例代碼

    nginx配置支持https的示例代碼

    這篇文章主要介紹了nginx配置支持https的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12

最新評論

察隅县| 什邡市| 上饶县| 孝感市| 宁河县| 铜鼓县| 崇阳县| 台江县| 云和县| 盱眙县| 崇州市| 图们市| 浠水县| 聊城市| 济宁市| 永修县| 文登市| 平罗县| 沙雅县| 雅江县| 南宁市| 安远县| 南通市| 陈巴尔虎旗| 长汀县| 时尚| 西宁市| 舟曲县| 左贡县| 江永县| 寻甸| 济源市| 嵊泗县| 富宁县| 石狮市| 横山县| 高邮市| 邛崃市| 通道| 鸡西市| 兴宁市|