指令作用匹配指定的請求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ī)則參考資料:https://www.cnblogs.com/lidabo/p/4169396.htmlNginx官方英文文檔 : http://nginx.org/en/docs/http/ngx_http_core_module.html
作者:悠然望劍
鏈接:http://www.reibang.com/p/d3fb148cb5eb
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處质帅。