nginx location URL匹配規(guī)則

nginx rewrite語法

rewrite regex replacement [flag];

  • regex: 是 PCRE 語法格式的正則表達(dá)式,用于匹配字符串戏自。
  • replacement: 是重寫 URI 的改寫規(guī)則件豌。當(dāng)改寫規(guī)則以"http://""https://"或"$scheme"開頭時(shí)浸颓,Nginx 重寫該語句后將停止執(zhí)行后續(xù)任務(wù)捎稚,并將改寫后的 URI 跳轉(zhuǎn)返回客戶端碧聪。
  • flag: 是執(zhí)行該條重寫指令后的操作控制符翠储。操作控制符有如下 4 種:
    • break: 執(zhí)行完當(dāng)前重寫規(guī)則跳轉(zhuǎn)到新的 URI 后不再執(zhí)行后續(xù)操作什猖。不影響用戶瀏覽器 URI 顯示。
    • last: 執(zhí)行完當(dāng)前重寫規(guī)則跳轉(zhuǎn)到新的 URI 后繼續(xù)執(zhí)行后續(xù)操作素邪。
    • redirect: 返回響應(yīng)狀態(tài)碼 302 的臨時(shí)重定向外莲,返回內(nèi)容是重定向 URI 的內(nèi)容,但瀏覽器網(wǎng)址仍為請(qǐng)求時(shí)的 URI;
    • 返回響應(yīng)狀態(tài)碼 301 的永久重定向偷线,返回內(nèi)容是重定向 URI 的內(nèi)容磨确,瀏覽器網(wǎng)址變?yōu)橹囟ㄏ虻?URI。
      下面一個(gè)例子將本地63561代理到nginx代理80端口上声邦,并且所有URL上添加/prefix前綴乏奥。
    location /prefix/ {
       rewrite  ^/prefix/(.*)$ /$1 break;
           proxy_pass  http://localhost:63561;          
        }

原來URL http://localhost:63561/aaa => localhost/prefix/aaa
雖然在nginx添加了如下配置,可不一定生效哦亥曹,這里就要講下nginx URI 匹配規(guī)則

URI 匹配規(guī)則

location Modifier pattern { ... }

Modifier為location的修飾語邓了,定義URI的匹配規(guī)則。pattern 為匹配項(xiàng)歇式,可以是字符串或正則表達(dá)式

  • 沒有修飾符: 從指定模式開始驶悟,只支持字符串

location /abc{
root text;
}

下面規(guī)則都匹配:
http://localhost/abc/sdssd
http://localhost/abc?page=1&size=10
http://localhost/abcd
http://localhost/abc/

  • =: 完全匹配 URI 中除訪問參數(shù)以外的內(nèi)容,Linux 系統(tǒng)下會(huì)區(qū)分大小寫材失,Windows 系統(tǒng)下則不會(huì)痕鳍。

location = /test {
root text;
}

下面都匹配
http://localhost/test
http://localhost/test?page=1&size=10
不匹配
http://localhost/test2ds
http://localhost/test/

  • ~: 區(qū)分大小寫的正則匹配

location ~ /abc$ {
root text;
}

下面都匹配
http://localhost/abc
http://localhost/abc?p=123
不匹配
http://localhost/abc/
http://localhost/ABC
http://localhost/abc/bbd

  • ~*: 不區(qū)分大小的正則匹配

location ~* /abc$ {
root text;
}

下面都匹配
http://localhost/abc
http://localhsot/ABC
http://localhost/abc?p=123
不匹配
http://localhost/abc/
http://localhost/abc/bbd

  • ^~: 作用類似沒有修飾符的前綴匹配,nginx對(duì)一個(gè)請(qǐng)求精確前綴匹配成功后龙巨,停止繼續(xù)搜索其他到匹配項(xiàng)笼呆,支持正則表達(dá)式。

location ^~ /abc {
root text;
}

  • @: 只能內(nèi)部訪問的 location 區(qū)域旨别,可以被其他內(nèi)部跳轉(zhuǎn)指令使用

location @images {
proxy_pass http://images;
}

匹配順序

  1. 先檢測(cè)匹配項(xiàng)的內(nèi)容為非正則表達(dá)式修飾語的 location诗赌,然后再檢測(cè)匹配項(xiàng)的內(nèi)容為正則表達(dá)式修飾語的 location。
  2. 匹配項(xiàng)的內(nèi)容為正則與非正則都匹配的 location秸弛,按照匹配項(xiàng)的內(nèi)容為正則匹配的 location 執(zhí)行铭若。
  3. 所有匹配項(xiàng)的內(nèi)容均為非正則表達(dá)式的 location,按照匹配項(xiàng)的內(nèi)容完全匹配的內(nèi)容長(zhǎng)短進(jìn)行匹配递览,即匹配內(nèi)容多的 location 被執(zhí)行叼屠。
  4. 所有匹配項(xiàng)的內(nèi)容均為正則表達(dá)式的 location,按照書寫的先后順序進(jìn)行匹配绞铃,匹配后就執(zhí)行镜雨,不再做后續(xù)檢測(cè)。

https://www.w3schools.cn/nginx/nginx_command_localhost.asp

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末儿捧,一起剝皮案震驚了整個(gè)濱河市荚坞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌菲盾,老刑警劉巖颓影,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異亿汞,居然都是意外死亡瞭空,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門疗我,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咆畏,“玉大人,你說我怎么就攤上這事吴裤【烧遥” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵麦牺,是天一觀的道長(zhǎng)钮蛛。 經(jīng)常有香客問我,道長(zhǎng)剖膳,這世上最難降的妖魔是什么魏颓? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮吱晒,結(jié)果婚禮上甸饱,老公的妹妹穿的比我還像新娘。我一直安慰自己仑濒,他們只是感情好叹话,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著墩瞳,像睡著了一般驼壶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喉酌,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天热凹,我揣著相機(jī)與錄音,去河邊找鬼泪电。 笑死般妙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的歪架。 我是一名探鬼主播股冗,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼和蚪!你這毒婦竟也來了止状?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤攒霹,失蹤者是張志新(化名)和其女友劉穎怯疤,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體催束,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡集峦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片塔淤。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡摘昌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出高蜂,到底是詐尸還是另有隱情聪黎,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布备恤,位于F島的核電站稿饰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏露泊。R本人自食惡果不足惜喉镰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望惭笑。 院中可真熱鬧侣姆,春花似錦、人聲如沸脖咐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屁擅。三九已至偿凭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間派歌,已是汗流浹背弯囊。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胶果,地道東北人匾嘱。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像早抠,于是被迫代替她去往敵國和親霎烙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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