Nginx location 模塊學(xué)習(xí)

根據(jù)請求的URI設(shè)置配置集合付材。所有的匹配都是在解碼以后的娩鹉,相鄰的兩個/會被翻譯成一個/逾滥。

一個location規(guī)則可以是一個 前綴字符串(prefix string) 也可以是一個正則表達(dá)式(Regular expressions)
正則表達(dá)式由修飾符“ * ” 開頭(用于大小寫不敏感的匹配)掂榔,或者由修飾符“~”開頭(用于大小寫敏感的匹配)窒百。給一個請求去查找匹配的時候词裤,nginx首先檢查使用前綴字符串( prefix string )定義的規(guī)則刺洒。其中,所有匹配中的規(guī)則最長的一條會被確認(rèn)并標(biāo)記吼砂,繼續(xù)檢查正則表達(dá)式逆航,按照配置文件的順序檢查。當(dāng)有匹配的正則記錄以后立即停止渔肩,并立即使用該條配置因俐。如果沒有一條正則表達(dá)式被匹配到,則使用之前前綴字符串匹配到的配置周偎。

location 是可以嵌套使用的抹剩,除了下面提到的一些意外。

如果最長匹配前綴位置具有“^?”修飾符蓉坎,則不檢查正則表達(dá)式澳眷。

同樣,如果使用修飾符“=”可以做精確匹配蛉艾。完全匹配到規(guī)則钳踊,則停止搜索。舉例伺通,如果 “/”請求經(jīng)常發(fā)生箍土,可以定義“l(fā)ocation = /” 可以加速請求的處理速度,因?yàn)樗阉髟诘谝淮伪葘φ_以后會立即終止罐监。這樣的規(guī)則顯然不能被嵌套起來吴藻。

讓我們來舉一些例子:

location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}

"/"請求匹配A規(guī)則,"/index.html"請求匹配B規(guī)則弓柱,"/documents/document.html"請求匹配C規(guī)則沟堡, "/images/1.gif"請求匹配D規(guī)則侧但,"documents/1.jpg" 請求匹配規(guī)則E

指令作用匹配指定的請求uri(請求uri不包含查詢字符串,如http://localhost:8080/test?id=10航罗,請求uri是/test)語法形式location [ = | ~ | ~* | ^~ | @] /uri/ { configuration }匹配模式及順序匹配字符串分為兩種:普通字符串(literal string)和正則表達(dá)式(regular expression)禀横,其中 ~ 和 ~* 用于正則表達(dá)式, 其他前綴和無任何前綴都用于普通字符串粥血。匹配順序是:1柏锄、先匹配普通字符串,將最精確的匹配暫時存儲复亏;2趾娃、然后按照配置文件中的聲明順序進(jìn)行正則表達(dá)式匹配,只要匹配到一條正則表達(dá)式缔御,則停止匹配抬闷,取正則表達(dá)式為匹配結(jié)果;3耕突、如果所有正則表達(dá)式都匹配不上笤成,則取1中存儲的結(jié)果;4眷茁、如果普通字符串和正則表達(dá)式都匹配不上炕泳,則報404 NOT FOUND。location = /uri =開頭表示精確前綴匹配蔼卡,只有完全匹配才能生效喊崖。location ^~ /uri ^~開頭表示普通字符串匹配上以后不再進(jìn)行正則匹配挣磨。location ~ pattern ~開頭表示區(qū)分大小寫的正則匹配雇逞。location ~* pattern ~開頭表示不區(qū)分大小寫的正則匹配。location /uri 不帶任何修飾符茁裙,表示前綴匹配塘砸。location / 通用匹配,任何未匹配到其他location的請求都會匹配到晤锥。注意:正則匹配會根據(jù)匹配順序掉蔬,找到第一個匹配的正則表達(dá)式后將停止搜索。普通字符串匹配則無視順序矾瘾,只會選擇最精確的匹配女轿。常用配置指令alias、root壕翩、proxy_pass1蛉迹、alias——別名配置,用于訪問文件系統(tǒng)放妈,在匹配到location配置的URL路徑后北救,指向alias配置的路徑荐操,如:
location /test/ {
alias /usr/local/;
}
請求/test/1.jpg(省略了協(xié)議和域名),將會返回文件/usr/local/1.jpg珍策。如果alias配置在正則匹配的location內(nèi)托启,則正則表達(dá)式中必須包含捕獲語句(也就是括號()),而且alias配置中也要引用這些捕獲值攘宙。如:
location ~
/img/(.+.(gif|png|jpeg)) {
alias /usr/local/images/$1;
}
請求中只要能匹配到正則屯耸,比如/img/flower.png 或者 /resource/img/flower.png,都會轉(zhuǎn)換為請求/usr/local/images/flower.png蹭劈。2肩民、root——根路徑配置,用于訪問文件系統(tǒng)链方,在匹配到location配置的URL路徑后持痰,指向root配置的路徑,并把請求路徑附加到其后祟蚀,如:
location /test/ {
root /usr/local/;
}
請求/test/1.jpg工窍,將會返回文件/usr/local/test/1.jpg。3前酿、proxy_pass——反向代理配置患雏,用于代理請求,適用于前后端負(fù)載分離或多臺機(jī)器罢维、服務(wù)器負(fù)載分離的場景淹仑,在匹配到location配置的URL路徑后,轉(zhuǎn)發(fā)請求到proxy_pass配置額URL肺孵,是否會附加location配置路徑與proxy_pass配置的路徑后是否有"/"有關(guān)匀借,有"/"則不附加,如:
location /test/ {
proxy_pass http://127.0.0.1:8080/;
}
請求/test/1.jpg平窘,將會被nginx轉(zhuǎn)發(fā)請求到http://127.0.0.1:8080/1.jpg(未附加/test/路徑)吓肋。附:匹配規(guī)則

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瑰艘,隨后出現(xiàn)的幾起案子是鬼,更是在濱河造成了極大的恐慌,老刑警劉巖紫新,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件均蜜,死亡現(xiàn)場離奇詭異,居然都是意外死亡芒率,警方通過查閱死者的電腦和手機(jī)囤耳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人紫皇,你說我怎么就攤上這事慰安。” “怎么了聪铺?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵化焕,是天一觀的道長。 經(jīng)常有香客問我铃剔,道長撒桨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任键兜,我火速辦了婚禮凤类,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘普气。我一直安慰自己谜疤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布现诀。 她就那樣靜靜地躺著夷磕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仔沿。 梳的紋絲不亂的頭發(fā)上坐桩,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天,我揣著相機(jī)與錄音封锉,去河邊找鬼绵跷。 笑死,一個胖子當(dāng)著我的面吹牛成福,可吹牛的內(nèi)容都是我干的碾局。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼闷叉,長吁一口氣:“原來是場噩夢啊……” “哼擦俐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起握侧,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘿期,沒想到半個月后品擎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡备徐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年萄传,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡秀菱,死狀恐怖振诬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衍菱,我是刑警寧澤赶么,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站脊串,受9級特大地震影響辫呻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜琼锋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一放闺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缕坎,春花似錦怖侦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叉谜,卻和暖如春旗吁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背停局。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工很钓, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人董栽。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓码倦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锭碳。 傳聞我的和親對象是個殘疾皇子袁稽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355

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