Nginx路由匹配規(guī)則的一些理解

使用過(guò)nginx的同學(xué)都知道葵第,在nginx配置文件中通過(guò)location配置路由轉(zhuǎn)發(fā)規(guī)則攒霹,配置語(yǔ)法為:

location   [=|~|~*|^~]    /uri/   { 
          ...
}

中括號(hào)中為路由匹配符號(hào)珊拼,常見(jiàn)的有:

1  =:精確匹配
2  ^~:精確前綴匹配
3  ~:區(qū)分大小寫(xiě)的正則匹配
4  ~*:不區(qū)分大小寫(xiě)的正則匹配
5  /uri:普通前綴匹配
6  /:通用匹配

精確匹配

精確匹配使用 表示,nginx進(jìn)行路由匹配的時(shí)候友雳,精確匹配具有最高的優(yōu)先級(jí)稿湿,請(qǐng)求一旦精確匹配成功nginx會(huì)停止搜索其他到匹配項(xiàng)

配置實(shí)例

location = /test {
        ...
}

精確前綴匹配

精確前綴匹配的優(yōu)先級(jí)僅次于精確匹配,nginx對(duì)一個(gè)請(qǐng)求精確前綴匹配成功后押赊,停止繼續(xù)搜索其他到匹配項(xiàng)

配置實(shí)例

location ^~ /test_a {
        ...
}

正則匹配

正則匹配分為區(qū)分大小寫(xiě)和不區(qū)分大小寫(xiě)兩種饺藤,分別用 ~~* 表示;一個(gè)請(qǐng)求精確匹配和精確前綴匹配都失敗后流礁,如果配置有相關(guān)的正則匹配location涕俗,nginx會(huì)嘗試對(duì)該請(qǐng)求進(jìn)行正則匹配。需要說(shuō)明的是正則匹配之間沒(méi)有優(yōu)先級(jí)一說(shuō)神帅,而是按照在配置文件中出現(xiàn)的順序進(jìn)行匹配再姑,一旦匹配上一個(gè),就會(huì)停止向下繼續(xù)搜索

配置實(shí)例

# 配置1
location ~ /test_a {
        ...
}

# 配置2  
location ~* /test_A {
        ...
}

對(duì)于請(qǐng)求 /test_a/hello 來(lái)說(shuō)會(huì)被匹配到 配置1 處理找御,/test_A/hello 則會(huì)被匹配給 配置2 處理

普通前綴匹配

普通前綴匹配前面沒(méi)有任何修飾符元镀,直接在location后寫(xiě)需要匹配的uri,它的優(yōu)先級(jí)次于正則匹配

配置實(shí)例

location /img {
        ...
}

通用匹配

通用匹配使用一個(gè) / 表示霎桅,可以匹配所有請(qǐng)求栖疑,一般nginx配置文件最后都會(huì)有一個(gè)通用匹配規(guī)則,當(dāng)其他匹配規(guī)則均失效時(shí)滔驶,請(qǐng)求會(huì)被路由給通用匹配規(guī)則處理遇革;如果沒(méi)有配置通用匹配,并且其他所有匹配規(guī)則均失效時(shí),nginx會(huì)返回 404 錯(cuò)誤

配置實(shí)例

location / {
        ...
}

引用一個(gè)完整例子

nginx路由規(guī)則配置:

location = / {
   echo "規(guī)則A";
}
location = /login {
   echo "規(guī)則B";
}
location ^~ /static/ {
   echo "規(guī)則C";
}
location ^~ /static/files {
    echo "規(guī)則X";
}
location ~ \.(gif|jpg|png|js|css)$ {
   echo "規(guī)則D";
}
location ~* \.png$ {
   echo "規(guī)則E";
}
location /img {
    echo "規(guī)則Y";
}
location / {
   echo "規(guī)則F";
}
請(qǐng)求uri 匹配路由規(guī)則
http://localhost/ 規(guī)則A
http://localhost/login 規(guī)則B
http://localhost/register 規(guī)則F
http://localhost/static/a.html 規(guī)則C
http://localhost/static/files/a.txt 規(guī)則X
http://localhost/a.png 規(guī)則D
http://localhost/a.PNG 規(guī)則E
http://localhost/img/a.gif 規(guī)則D
http://localhost/img/a.tiff 規(guī)則Y

以上是對(duì)nginx路由匹配規(guī)則的粗略總結(jié)和歸納萝快,如有不足之處歡迎指正锻霎,共同探討!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揪漩,一起剝皮案震驚了整個(gè)濱河市旋恼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌氢拥,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锨侯,死亡現(xiàn)場(chǎng)離奇詭異嫩海,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)囚痴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)叁怪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人深滚,你說(shuō)我怎么就攤上這事奕谭。” “怎么了痴荐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵血柳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我生兆,道長(zhǎng)难捌,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任鸦难,我火速辦了婚禮根吁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘合蔽。我一直安慰自己击敌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布拴事。 她就那樣靜靜地躺著沃斤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刃宵。 梳的紋絲不亂的頭發(fā)上轰枝,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音组去,去河邊找鬼鞍陨。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诚撵。 我是一名探鬼主播缭裆,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼寿烟!你這毒婦竟也來(lái)了澈驼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筛武,失蹤者是張志新(化名)和其女友劉穎缝其,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體徘六,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡内边,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了待锈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漠其。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖竿音,靈堂內(nèi)的尸體忽然破棺而出和屎,到底是詐尸還是另有隱情,我是刑警寧澤春瞬,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布柴信,位于F島的核電站,受9級(jí)特大地震影響宽气,放射性物質(zhì)發(fā)生泄漏颠印。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一抹竹、第九天 我趴在偏房一處隱蔽的房頂上張望线罕。 院中可真熱鬧,春花似錦窃判、人聲如沸钞楼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)询件。三九已至,卻和暖如春唆樊,著一層夾襖步出監(jiān)牢的瞬間宛琅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工逗旁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嘿辟,地道東北人舆瘪。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像红伦,于是被迫代替她去往敵國(guó)和親英古。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理昙读,服務(wù)發(fā)現(xiàn)召调,斷路器,智...
    卡卡羅2017閱讀 134,661評(píng)論 18 139
  • 上一篇《WEB請(qǐng)求處理一:瀏覽器請(qǐng)求發(fā)起處理》蛮浑,我們講述了瀏覽器端請(qǐng)求發(fā)起過(guò)程唠叛,通過(guò)DNS域名解析服務(wù)器IP,并建...
    七寸知架構(gòu)閱讀 81,012評(píng)論 21 356
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問(wèn)題,請(qǐng)求時(shí)即使無(wú)狀態(tài)連接如web服務(wù)都無(wú)法達(dá)到并發(fā)響應(yīng)量級(jí)一萬(wàn)的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,005評(píng)論 0 9
  • 1.ngnix介紹 ngnix www服務(wù)軟件 俄羅斯人開(kāi)發(fā) 開(kāi)源 性能很高 本身是一款靜態(tài)WWW軟件 靜態(tài)小文件...
    逗比punk閱讀 2,099評(píng)論 1 6
  • 沒(méi)有計(jì)劃的進(jìn)步就是“演化”沮稚。創(chuàng)業(yè)就像生物演化艺沼,大家嘗試各種可能性,最終被證明可行的壮虫,為數(shù)不多澳厢。對(duì)于個(gè)人來(lái)說(shuō)环础,我們承...
    用生命詮釋高效閱讀 528評(píng)論 0 1