前言
最近幫客戶配置服務(wù)器,經(jīng)常修改Nginx的配置文件,頻繁的用到正式匹配規(guī)則,這里整理了一些常用的正則參數(shù)及規(guī)則,以備查詢。
Nginx配置中Location的語(yǔ)法規(guī)則 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … }
- = 表示精確匹配
- ~ 表示區(qū)分大小寫(xiě)正則匹配
- ~* 表示不區(qū)分大小寫(xiě)正則匹配
- ^~ 表示URI以某個(gè)常規(guī)字符串開(kāi)頭
- !~ 表示區(qū)分大小寫(xiě)正則不匹配
- !~* 表示不區(qū)分大小寫(xiě)正則不匹配
- / 通用匹配,任何請(qǐng)求都會(huì)匹配到
匹配順序
多個(gè)location配置的情況下匹配順序?yàn)椋?/p>
首先匹配 =
其次匹配 ^~
其次是按文件中順序的正則匹配
最后是交給 / 通用匹配
當(dāng)有匹配成功時(shí)候,停止匹配,按當(dāng)前匹配規(guī)則處理請(qǐng)求。
. 匹配除換行符以外的任意字符
\w 匹配字母或數(shù)字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數(shù)字
\b 匹配單詞的開(kāi)始或結(jié)束
^ 匹配字符串的開(kāi)始
$ 匹配字符串的結(jié)束
* 重復(fù)零次或更多次
+ 重復(fù)一次或更多次
? 重復(fù)零次或一次
{n} 重復(fù)n次
{n,} 重復(fù)n次或更多次
{n,m} 重復(fù)n到m次
*? 重復(fù)任意次,但盡可能少重復(fù)
+? 重復(fù)1次或更多次,但盡可能少重復(fù)
?? 重復(fù)0次或1次,但盡可能少重復(fù)
{n,m}? 重復(fù)n到m次,但盡可能少重復(fù)
{n,}? 重復(fù)n次以上,但盡可能少重復(fù)
\W 匹配任意不是字母,數(shù)字,下劃線,漢字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非數(shù)字的字符
\B 匹配不是單詞開(kāi)頭或結(jié)束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou這幾個(gè)字母以外的任意字符
常用的規(guī)則
精確匹配
location = / {
proxy_pass http://127.0.0.1:9090/
}
將所有請(qǐng)求直接轉(zhuǎn)發(fā)給服務(wù)器的9090端口。
處理靜態(tài)文件
#目錄匹配
location ^~ /static/ {
root /webroot/static/;
}
#后綴匹配
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}
轉(zhuǎn)發(fā)動(dòng)態(tài)請(qǐng)求到后端應(yīng)用服務(wù)器
#將/account/開(kāi)始的請(qǐng)求轉(zhuǎn)發(fā)給Account服務(wù)器
location /account/ {
proxy_pass http://127.0.0.1:8080/
}
#將/order/開(kāi)始的請(qǐng)求轉(zhuǎn)發(fā)給Order服務(wù)器
location /order/ {
proxy_pass http://127.0.0.1:9090/
}
rewrite指令
- last 相當(dāng)于apache里面的[L]標(biāo)記,表示rewrite。
- break 本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則。
- redirect 返回302臨時(shí)重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址。
- permanent 返回301永久重定向,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址。
- 使用last和break實(shí)現(xiàn)URI重寫(xiě),瀏覽器地址欄不變。
- 使用alias指令必須用last標(biāo)記;使用proxy_pass指令時(shí),需要使用break標(biāo)記。
- last標(biāo)記在本條rewrite規(guī)則執(zhí)行完畢后,會(huì)對(duì)其所在server{……}標(biāo)簽重新發(fā)起請(qǐng)求,而break標(biāo)記則在本條規(guī)則匹配完成后,終止匹配。
總結(jié)
到此這篇關(guān)于Nginx正則表達(dá)式相關(guān)的參數(shù)和規(guī)則的文章就介紹到這了,更多相關(guān)Nginx正則參數(shù)及規(guī)則內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!