欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx?Location匹配規(guī)則的具體使用

 更新時間:2024年11月06日 08:31:12   作者:為什么要做囚徒  
Nginx?location指令用于配置請求的處理方式,包括精確匹配、最長前綴匹配、正則表達式匹配等,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 語法基礎

Nginx 的 location 指令的基本語法如下:

location [=|~|~*|^~|@] uri { ... }
  • = 表示精確匹配。
  • ~ 表示區(qū)分大小寫的正則匹配。
  • ~* 表示不區(qū)分大小寫的正則匹配。
  • ^~ 表示非正則匹配,如果該選項匹配,則不再進行正則匹配。( ^ 表示“非”,~ 表示“正則”,字符意思是:不會繼續(xù)匹配正則)
  • @ 定義一個命名的 location,通常用于內(nèi)部重定向。

2. 匹配規(guī)則

Nginx 對多個 location 的匹配遵循一定的規(guī)則和優(yōu)先級。當 Nginx 收到一個請求時,它會按照以下順序進行匹配

2.1 精確匹配(=)

優(yōu)先級最高。當請求的URI與location后面的字符串完全相同時,Nginx會選擇這個location塊進行處理。(這個好理解,就是路徑完全匹配,一模一樣,優(yōu)先級最高)

示例

location = /favicon.ico {
    # 處理/favicon.ico的請求
}

只有當請求URI嚴格為/favicon.ico時,上述location塊才會被使用。

2.2. 最長前綴匹配(^~)

^~開頭的location表示最長前綴匹配。如果請求的URI以某個location后面的字符串開頭,并且這個字符串是最長的(或者使用了^~修飾符),Nginx會選擇這個location塊。但請注意,^~修飾符實際上會停止后續(xù)的正則匹配搜索。(最長前綴匹配,意思就是以location后面的字符開始的且最長匹配,有的地方叫做非正則匹配,意思是滿足了最長前綴匹配,就不會再匹配正則匹配了,也可以理解為即滿足最長前綴匹配,也滿足正則匹配,就匹配最長前綴匹配,也就是所說的最長前綴匹配優(yōu)先級高于正則匹配,所謂的優(yōu)先級是兩者或多著都匹配的情況下,才會顯現(xiàn)優(yōu)先級)

示例

   location ^~ /hello {
     return  601;
   }

    location ^~ /hellow {
     return  602;
   }

   location ^~ /hello/world {
     return  603;
   }

    location ~ /hello {
     return  604;
   }

對于請求/hello,滿足 601和 604,實際返回601,就是因為^~優(yōu)先級高于正則匹配;
對于請求/hellow,滿足 601和 602,實際返回602,因為最長前綴匹配原則;

2.3. 正則表達式匹配(~和~*)

正則表達式匹配允許定義更復雜的URI匹配模式。~表示區(qū)分大小寫的正則匹配,而~*表示不區(qū)分大小寫的正則匹配。

Nginx會按照配置文件中的順序逐個檢查正則表達式location塊,直到找到第一個匹配的塊。因此,正則表達式的順序很重要。

示例

location ~ \.(gif|jpg|png)$ {
    # 處理以.gif、.jpg或.png結(jié)尾的請求(區(qū)分大小寫)
}
location ~* \.(GIF|JPG|PNG)$ {
    # 處理以.GIF、.JPG或.PNG結(jié)尾的請求(不區(qū)分大小寫)
}

對于請求/images/photo.jpg,第一個location塊將被匹配(如果請求是區(qū)分大小寫的)。

2.4. 普通前綴匹配(無修飾符)

普通前綴匹配也按照配置文件中出現(xiàn)的先后順序進行匹配,先出現(xiàn)的location指令優(yōu)先匹配。

示例

   location /hello {
     return  601;
   }

   location /hellow {
     return  602;
   }

對于請求/hellow,滿足 601和 602,實際返回602,證明滿足長前綴匹配原則

再增加一項配置
```
  location ~ /hello[a-z] {
          return  603;
  }
```

對于請求/hellow,滿足 601、 602和603,實際返回603,證明正則匹配優(yōu)先級高于普通匹配

2.5. 默認匹配(/)

如果請求的URI與任何特定的location塊都不匹配,Nginx將使用默認的location塊(如果有的話)。通常,默認的location塊是一個不帶任何修飾符的location /塊。

示例

location / {
    # 處理所有其他請求
}

綜上所述

Nginx的location匹配規(guī)則優(yōu)先級可以總結(jié)為:

  • 精確匹配(=
  • 最長前綴匹配(^~),但會停止后續(xù)的正則匹配搜索
  • 正則表達式匹配(~~*),按配置順序
  • 普通前綴匹配(無修飾符),也按配置順序
  • 默認匹配(/

3. 注意事項

  • 正則匹配與順序:正則 location 的匹配順序很重要,因為 Nginx 會按照配置文件中定義的順序進行匹配。
  • proxy_pass 的路徑替換:在配置 proxy_pass 時,需要注意 location 后面的 URI 是否包含斜杠(/),這會影響請求的轉(zhuǎn)發(fā)路徑。通常建議 location 和 proxy_pass 要么都加斜杠,要么都不加。
  • 性能優(yōu)化:將精確匹配放在前面,可以減少不必要的正則匹配,提高 Nginx 的處理效率。

4. 常見的正則符號

符號描述示例
^匹配字符串的開始位置^http 匹配以"http"開頭的字符串
$匹配字符串的結(jié)束位置\.com$ 匹配以".com"結(jié)尾的字符串
.匹配除換行符以外的任意單個字符a.c 匹配"abc"、"a1c"等
*匹配前面的子表達式零次或多次ab*c 匹配"ac"、“abc”、"abbc"等
+匹配前面的子表達式一次或多次ab+c 匹配"abc"、“abbc”、“abbbc"等,但不匹配"ac”
?匹配前面的子表達式零次或一次ab?c 匹配"ac"、“abc”
|或匹配模式,匹配左邊的表達式或右邊的表達式(jpg|gif|png) 匹配"jpg"、“gif"或"png”
\轉(zhuǎn)義字符,用于匹配特殊字符\. 匹配"."字符本身
[ ]字符集合,匹配集合中的任意單個字符[a-z] 匹配任意小寫字母
[^ ]反向字符集合,匹配不在集合中的任意單個字符[^a-z] 匹配任意非小寫字母
{n}n 是一個非負整數(shù),匹配確定的 n 次o{2} 匹配"oo"
{n,}n 是一個非負整數(shù),至少匹配 n 次o{2,} 匹配"oo"、“ooo”、"oooo"等
{n,m}n 和 m 均為非負整數(shù),其中n <= m,匹配至少 n 次,但不超過 m 次o{2,4} 匹配"oo"、“ooo”、“oooo”

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

相關文章

  • nginx 開啟 pathinfo的過程詳解

    nginx 開啟 pathinfo的過程詳解

    這篇文章主要介紹了nginx 開啟 pathinfo的過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • 利用nginx訪問日志如何記錄mysql中的用戶id詳解

    利用nginx訪問日志如何記錄mysql中的用戶id詳解

    這篇文章主要給大家介紹了關于利用nginx訪問日志如何記錄mysql中用戶id的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
    2017-07-07
  • nginx配置history模式的使用小結(jié)

    nginx配置history模式的使用小結(jié)

    本文詳細介紹了在Nginx服務器中配置history模式的方法,具體通過使用try_files指令來實現(xiàn),這種配置方式主要適用于單頁應用,可以確保無論訪問什么URL,服務器總是返回同一個HTML文件,然后由前端路由來處理不同的頁面顯示
    2024-10-10
  • 分享Nginx下10個安全問題提示

    分享Nginx下10個安全問題提示

    Nginx是當今最流行的Web服務器之一。它為世界上7%的web流量提供服務而且正在以驚人的速度增長。它是個讓人驚奇的服務器,我愿意部署它
    2014-04-04
  • Python的Bottle框架基本知識總結(jié)

    Python的Bottle框架基本知識總結(jié)

    這篇文章主要介紹了Python的Bottle框架基本知識總結(jié),本文翻譯自Bottle官方開發(fā)文檔,需要的朋友可以參考下
    2015-05-05
  • Nginx實現(xiàn)動態(tài)封禁IP的設計方案

    Nginx實現(xiàn)動態(tài)封禁IP的設計方案

    為了封禁某些爬蟲或者惡意用戶對服務器的請求,我們需要建立一個動態(tài)的 IP 黑名單,對于黑名單中的 IP ,我們將拒絕提供服務,并且可以設置封禁失效時間,所以本文給大家介紹了Nginx實現(xiàn)動態(tài)封禁IP的設計方案,需要的朋友可以參考下
    2024-12-12
  • Nginx服務器搭建和基本配置詳解

    Nginx服務器搭建和基本配置詳解

    這篇文章主要介紹了Nginx服務器搭建和基本配置詳解,Nginx是事件驅(qū)動的高性能服務器,需要的朋友可以參考下
    2015-09-09
  • Windows下用Nginx代理Django安裝配置實例

    Windows下用Nginx代理Django安裝配置實例

    這篇文章主要介紹了Windows下用Nginx代理Django安裝配置實例,本文講解了安裝djanjo、用djanjo生成簡單web頁面、用nginx進行代理等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • nginx反向代理https內(nèi)部定向到http報302的問題及解決

    nginx反向代理https內(nèi)部定向到http報302的問題及解決

    這篇文章主要介紹了nginx反向代理https內(nèi)部定向到http報302的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解nginx如何配置HTTPS

    詳解nginx如何配置HTTPS

    本篇文章主要介紹了詳解nginx如何配置HTTPS,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論