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

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

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

1. 語(yǔ)法基礎(chǔ)

Nginx 的 location 指令的基本語(yǔ)法如下:

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

2. 匹配規(guī)則

Nginx 對(duì)多個(gè) location 的匹配遵循一定的規(guī)則和優(yōu)先級(jí)。當(dāng) Nginx 收到一個(gè)請(qǐng)求時(shí),它會(huì)按照以下順序進(jìn)行匹配

2.1 精確匹配(=)

優(yōu)先級(jí)最高。當(dāng)請(qǐng)求的URI與location后面的字符串完全相同時(shí),Nginx會(huì)選擇這個(gè)location塊進(jìn)行處理。(這個(gè)好理解,就是路徑完全匹配,一模一樣,優(yōu)先級(jí)最高)

示例

location = /favicon.ico {
    # 處理/favicon.ico的請(qǐng)求
}

只有當(dāng)請(qǐng)求URI嚴(yán)格為/favicon.ico時(shí),上述location塊才會(huì)被使用。

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

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

示例

   location ^~ /hello {
     return  601;
   }

    location ^~ /hellow {
     return  602;
   }

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

    location ~ /hello {
     return  604;
   }

對(duì)于請(qǐng)求/hello,滿足 601和 604,實(shí)際返回601,就是因?yàn)閊~優(yōu)先級(jí)高于正則匹配;
對(duì)于請(qǐng)求/hellow,滿足 601和 602,實(shí)際返回602,因?yàn)樽铋L(zhǎng)前綴匹配原則;

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

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

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

示例

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

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

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

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

示例

   location /hello {
     return  601;
   }

   location /hellow {
     return  602;
   }

對(duì)于請(qǐng)求/hellow,滿足 601和 602,實(shí)際返回602,證明滿足長(zhǎng)前綴匹配原則

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

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

2.5. 默認(rèn)匹配(/)

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

示例

location / {
    # 處理所有其他請(qǐng)求
}

綜上所述

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

  • 精確匹配(=
  • 最長(zhǎng)前綴匹配(^~),但會(huì)停止后續(xù)的正則匹配搜索
  • 正則表達(dá)式匹配(~~*),按配置順序
  • 普通前綴匹配(無(wú)修飾符),也按配置順序
  • 默認(rèn)匹配(/

3. 注意事項(xiàng)

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

4. 常見(jiàn)的正則符號(hào)

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

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

相關(guān)文章

  • nginx 開(kāi)啟 pathinfo的過(guò)程詳解

    nginx 開(kāi)啟 pathinfo的過(guò)程詳解

    這篇文章主要介紹了nginx 開(kāi)啟 pathinfo的過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 利用nginx訪問(wèn)日志如何記錄mysql中的用戶id詳解

    利用nginx訪問(wèn)日志如何記錄mysql中的用戶id詳解

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

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

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

    分享Nginx下10個(gè)安全問(wèn)題提示

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

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

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

    Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的設(shè)計(jì)方案

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

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

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

    Windows下用Nginx代理Django安裝配置實(shí)例

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

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

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

    詳解nginx如何配置HTTPS

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

最新評(píng)論