nginx配置location

指令作用

匹配指定的請求uri(請求uri不包含查詢字符串,如http://localhost:8080/test?id=10,請求uri是/test)

語法形式

location? ?[ = | ~ | ~* | ^~ | @]? ?/uri/? ? ?{ configuration }

匹配模式及順序

匹配字符串分為兩種:普通字符串(literal string)和正則表達(dá)式(regular expression),其中 ~ 和 ~* 用于正則表達(dá)式, 其他前綴和無任何前綴都用于普通字符串。

匹配順序是:1、先匹配普通字符串,將最精確的匹配暫時(shí)存儲;2、然后按照配置文件中的聲明順序進(jìn)行正則表達(dá)式匹配,只要匹配到一條正則表達(dá)式,則停止匹配,取正則表達(dá)式為匹配結(jié)果;3、如果所有正則表達(dá)式都匹配不上,則取1中存儲的結(jié)果;4、如果普通字符串和正則表達(dá)式都匹配不上,則報(bào)404 NOT FOUND。

location? ?=? ?/uri? ? ? ? ?=開頭表示精確前綴匹配,只有完全匹配才能生效。

location? ?^~? ?/uri? ? ? ? ^~開頭表示普通字符串匹配上以后不再進(jìn)行正則匹配。

location? ?~? ?pattern? ? ?~開頭表示區(qū)分大小寫的正則匹配。

location? ?~*? ?pattern? ? ~*開頭表示不區(qū)分大小寫的正則匹配。

location? ?/uri? ? ? ? ? ? ? ? ? 不帶任何修飾符,表示前綴匹配。

location? ?/? ? ? ? ? ? ? ? ? ? ? ?通用匹配,任何未匹配到其他location的請求都會匹配到。

注意:正則匹配會根據(jù)匹配順序,找到第一個匹配的正則表達(dá)式后將停止搜索。普通字符串匹配則無視順序,只會選擇最精確的匹配。

常用配置指令alias、root、proxy_pass

1、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.html

Nginx官方英文文檔 :?http://nginx.org/en/docs/http/ngx_http_core_module.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容