溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nginx正則表達(dá)式的使用方法

發(fā)布時(shí)間:2020-07-23 17:26:48 來(lái)源:億速云 閱讀:1138 作者:小豬 欄目:服務(wù)器

這篇文章主要講解了Nginx正則表達(dá)式的使用方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

前言

最近幫客戶配置服務(wù)器,經(jīng)常修改Nginx的配置文件,頻繁的用到正式匹配規(guī)則,這里整理了一些常用的正則參數(shù)及規(guī)則,以備查詢。

Nginx配置中Location的語(yǔ)法規(guī)則 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … }

  1. = 表示精確匹配
  2. ~ 表示區(qū)分大小寫正則匹配
  3. ~* 表示不區(qū)分大小寫正則匹配
  4. ^~ 表示URI以某個(gè)常規(guī)字符串開(kāi)頭
  5. !~ 表示區(qū)分大小寫正則不匹配
  6. !~* 表示不區(qū)分大小寫正則不匹配
  7. / 通用匹配,任何請(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重寫,瀏覽器地址欄不變。
  • 使用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ī)則匹配完成后,終止匹配。

看完上述內(nèi)容,是不是對(duì)Nginx正則表達(dá)式的使用方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI