簡(jiǎn)介Nginx中的location匹配規(guī)則
location匹配命令
~ #波浪線表示執(zhí)行一個(gè)正則匹配,區(qū)分大小寫(xiě)
~* #表示執(zhí)行一個(gè)正則匹配,不區(qū)分大小寫(xiě)
^~ #^~表示普通字符匹配,如果該選項(xiàng)匹配,只匹配該選項(xiàng),不匹配別的選項(xiàng),一般用來(lái)匹配目錄
= #進(jìn)行普通字符精確匹配
@ #"@" 定義一個(gè)命名的 location,使用在內(nèi)部定向時(shí),例如 error_page, try_files
location 匹配的優(yōu)先級(jí)(與location在配置文件中的順序無(wú)關(guān))
= 精確匹配會(huì)第一個(gè)被處理。如果發(fā)現(xiàn)精確匹配,nginx停止搜索其他匹配。
普通字符匹配,正則表達(dá)式規(guī)則和長(zhǎng)的塊規(guī)則將被優(yōu)先和查詢匹配,也就是說(shuō)如果該項(xiàng)匹配還需去看有沒(méi)有正則表達(dá)式匹配和更長(zhǎng)的匹配。
^~ 則只匹配該規(guī)則,nginx停止搜索其他匹配,否則nginx會(huì)繼續(xù)處理其他location指令。
最后匹配理帶有"~"和"~*"的指令,如果找到相應(yīng)的匹配,則nginx停止搜索其他匹配;當(dāng)沒(méi)有正則表達(dá)式或者沒(méi)有正則表達(dá)式被匹配的情況下,那么匹配程度最高的逐字匹配指令會(huì)被使用。
location 優(yōu)先級(jí)官方文檔
=前綴的指令嚴(yán)格匹配這個(gè)查詢。如果找到,停止搜索。
所有剩下的常規(guī)字符串,最長(zhǎng)的匹配。如果這個(gè)匹配使用^?前綴,搜索停止。
正則表達(dá)式,在配置文件中定義的順序。
如果第3條規(guī)則產(chǎn)生匹配的話,結(jié)果被使用。否則,如同從第2條規(guī)則被使用。
例如
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何請(qǐng)求,因?yàn)樗姓?qǐng)求都是以"/"開(kāi)始
# 但是更長(zhǎng)字符匹配或者正則表達(dá)式匹配會(huì)優(yōu)先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 開(kāi)始的請(qǐng)求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg結(jié)尾的請(qǐng)求.
# 但是所有 /images/ 目錄的請(qǐng)求將由 [Configuration C]處理.
[ configuration D ]
}
location = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何請(qǐng)求,因?yàn)樗姓?qǐng)求都是以"/"開(kāi)始
# 但是更長(zhǎng)字符匹配或者正則表達(dá)式匹配會(huì)優(yōu)先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 開(kāi)始的請(qǐng)求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg結(jié)尾的請(qǐng)求.
# 但是所有 /images/ 目錄的請(qǐng)求將由 [Configuration C]處理.
[ configuration D ]
}
請(qǐng)求URI例子:
/documents/document.html -> 符合configuration B
/images/1.gif -> 符合configuration C
/documents/1.jpg ->符合 configuration D
@location 例子
error_page 404 = @fetch;
location @fetch(
proxy_pass http://fetch;
)
相關(guān)文章
國(guó)內(nèi)一些常用PHP的CMS的Nginx服務(wù)器的偽靜態(tài)規(guī)則整理
當(dāng)我們從apache服務(wù)器轉(zhuǎn)向Nginx服務(wù)器的時(shí)候,它們的偽靜態(tài)規(guī)則就不一樣了,所以你熟悉Nginx服務(wù)器的偽靜態(tài)規(guī)則,自己寫(xiě)當(dāng)然也好2011-03-03Nginx中使用gzip_http_version解決CDN只支持http 1.0問(wèn)題
這篇文章主要介紹了Nginx中使用gzip_http_version解決CDN只支持http 1.0問(wèn)題,問(wèn)題原因是在Header信息中看到Transfer-Encoding: chunked,使用本文方法就可以解決這個(gè)問(wèn)題,需要的朋友可以參考下2014-09-09nginx版本號(hào)隱藏(附405 not allowed解決辦法)
版本號(hào)泄露時(shí)攻擊者會(huì)利用相應(yīng)軟件版本的當(dāng)前漏洞,進(jìn)行有效的相應(yīng)攻擊,本文主要介紹了nginx版本號(hào)隱藏,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Nginx如何配置多個(gè)服務(wù)域名解析共用80端口詳解
對(duì)于Web而已,80端口和443端口是十分重要的,下面這篇文章主要給大家介紹了關(guān)于Nginx如何配置多個(gè)服務(wù)域名解析共用80端口的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09詳解Linux環(huán)境下使Nginx服務(wù)器支持中文url的配置流程
這篇文章主要介紹了Linux環(huán)境下使Nginx服務(wù)器支持中文url的配置流程,文中還介紹了一個(gè)在Linux下將非UTF-8的文件名轉(zhuǎn)換為UTF-8編碼,的方法,需要的朋友可以參考下2016-04-04nginx 配置location匹配規(guī)則實(shí)例講解
在本篇文章里小編給大家整理的是關(guān)于nginx 配置location匹配規(guī)則實(shí)例講解內(nèi)容,需要的朋友們學(xué)習(xí)下。2020-03-03