Nginx正則表達(dá)式相關(guān)的參數(shù)和規(guī)則介紹
最近幫客戶配置服務(wù)器,經(jīng)常修改Nginx的配置文件,頻繁的用到正式匹配規(guī)則,這里整理了一些常用的正則參數(shù)及規(guī)則,以備查詢。
Nginx配置中Location的語法規(guī)則 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … }
- = 表示精確匹配
- ~ 表示區(qū)分大小寫正則匹配
- ~* 表示不區(qū)分大小寫正則匹配
- ^~ 表示URI以某個(gè)常規(guī)字符串開頭
- !~ 表示區(qū)分大小寫正則不匹配
- !~* 表示不區(qū)分大小寫正則不匹配
- / 通用匹配,任何請(qǐng)求都會(huì)匹配到
匹配順序
多個(gè)location配置的情況下匹配順序?yàn)椋?/p>
首先匹配 =
其次匹配 ^~
其次是按文件中順序的正則匹配
最后是交給 / 通用匹配
當(dāng)有匹配成功時(shí)候,停止匹配,按當(dāng)前匹配規(guī)則處理請(qǐng)求。
. 匹配除換行符以外的任意字符
\w 匹配字母或數(shù)字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數(shù)字
\b 匹配單詞的開始或結(jié)束
^ 匹配字符串的開始
$ 匹配字符串的結(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 匹配不是單詞開頭或結(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/開始的請(qǐng)求轉(zhuǎn)發(fā)給Account服務(wù)器 location /account/ { proxy_pass http://127.0.0.1:8080/ } #將/order/開始的請(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重寫,瀏覽器地址欄不變。
- 使用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)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。