日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Nginx正则表达式之匹配操作符详解

發(fā)布時間:2025/4/5 96 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx正则表达式之匹配操作符详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

Nginx正則表達式之匹配操作符詳解

nginx可以在配置文件中對某些內置變量進行判斷,從而實現(xiàn)某些功能。例如:防止rewrite、盜鏈、對靜態(tài)資源設置緩存以及瀏覽器限制等等。由于nginx配置中有if指令,但是沒有對應else指令,所以判斷要分為匹配和不匹配。

字符串表達式支持正則表達式,能設定大小寫是否敏感。因此共有四個操作符,

如下:

~???? 區(qū)分大小寫(大小寫敏感)匹配成功?
~*?? 不區(qū)分大小寫匹配成功?
!~??? 區(qū)分大小寫匹配失敗?
!~*? 不區(qū)分大小寫匹配失敗


1: 限制某些類型的客戶端的訪問
if指令
所有的Nginx內置變量都可以通過if指令和正則表達式來進行匹配,并且根據(jù)匹配結果進行一些操
?

?代碼如下復制代碼

location / {
if ($http_user_agent ~ MSIE) {
return 503;
}
}

#限制IE訪問

如果把MSIE改成 Mozilla 就基本上把IE和firefox這樣pc瀏覽器限制了
2和3主要是針對盜鏈做處理
2:針對不同的文件類型

可能這個指令是我們平時使用正則匹配用的最多的指令:

?代碼如下復制代碼


location ~ .*.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {
???? if ($http_referer ~* javagg.com) {
???? #rewrite ^/ http://www.javagg.com/403.html;
???? return 403;
????? }
}

3:針對不同的目錄

?代碼如下復制代碼

location /img/ {
??? root /data/img/;
?? if ($http_referer ~* javagg.com) {
???????????? rewrite? ^/? http://www.admin99.net/images/error.gif
???????????? #return?? 403;
??? }
}

1.^~ 標識符后面跟一個字符串。

Nginx將在這個字符串匹配后停止進行正則表達式的匹配(location指令中正則表達式的匹配的結果優(yōu)先使用),如:location ^~ /images/,你希望對/images/這個目錄進行一些特別的操作,如增加expires頭,防盜鏈等,但是你又想把除了這個目錄的圖片外的所有圖片只進行增加expires頭的操作,這個操作可能會用到另外一個location,例如:location ~* .(gif|jpg|jpeg)$,這樣,如果有請求/images/1.jpg,nginx如何決定去進行哪個location中的操作呢?結果取決于標識符^~,如果你這樣寫:location /images/,這樣nginx會將1.jpg匹配到location ~* .(gif|jpg|jpeg)$這個location中,這并不是你需要的結果,而增加了^~這個標識符后,它在匹配了/images/這個字符串后就停止搜索其它帶正則的location。

2.= 表示精確的查找地址,

如location = /它只會匹配uri為/的請求,如果請求為/index.html,將查找另外的location,而不會匹配這個,當然可以寫兩個location,location = /和location /,這樣/index.html將匹配到后者,如果你的站點對/的請求量較大,可以使用這個方法來加快請求的響應速度。


3.@ 表示為一個location進行命名,即自定義一個location,這個location不能被外界所訪問,只能用于Nginx產(chǎn)生的子請求,主要為error_page和try_files。
注意,這3個標識符后面不能跟正則表達式,雖然配置文件檢查會通過,而且沒有任何警告,但是他們并不會進行匹配。
綜上所述,location指令對于后面值的匹配順序為:

1.標識符“=”的location會最先進行匹配,如果請求uri匹配這個location,將對請求使用這個location的配置。
2.進行字符串匹配,如果匹配到的location有^~這個標識符,匹配停止返回這個location的配置。
3.按照配置文件中定義的順序進行正則表達式匹配。最早匹配的location將返回里面的配置。
4.如果正則表達式能夠匹配到請求的uri,將使用這個正則對應的location,如果沒有,則使用第二條匹配的結果。

轉載于:https://my.oschina.net/u/3367404/blog/2936534

總結

以上是生活随笔為你收集整理的Nginx正则表达式之匹配操作符详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。