歡迎您光臨本站 註冊首頁

Nginx正則表達式相關的參數和規則介紹

←手機掃碼閱讀     kyec555 @ 2020-05-18 , reply:0

前言

最近幫客戶配置服務器,經常修改Nginx的配置文件,頻繁的用到正式匹配規則,這裡整理了一些常用的正則參數及規則,以備查詢。

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

  1. = 表示精確匹配

  2. ~ 表示區分大小寫正則匹配

  3. ~* 表示不區分大小寫正則匹配

  4. ^~ 表示URI以某個常規字符串開頭

  5. !~ 表示區分大小寫正則不匹配

  6. !~* 表示不區分大小寫正則不匹配

  7. / 通用匹配,任何請求都會匹配到

匹配順序

多個location配置的情況下匹配順序為:

首先匹配 =
其次匹配 ^~
其次是按文件中順序的正則匹配
最後是交給 / 通用匹配
當有匹配成功時候,停止匹配,按當前匹配規則處理請求。

. 匹配除換行符以外的任意字符
w 匹配字母或數字或下劃線或漢字
s 匹配任意的空白符
d 匹配數字
 匹配單詞的開始或結束
^ 匹配字符串的開始
$ 匹配字符串的結束

*     重複零次或更多次
+     重複一次或更多次
?     重複零次或一次
{n}     重複n次
{n,}     重複n次或更多次
{n,m}     重複n到m次
*?     重複任意次,但儘可能少重複
+?     重複1次或更多次,但儘可能少重複
??     重複0次或1次,但儘可能少重複
{n,m}?     重複n到m次,但儘可能少重複
{n,}?     重複n次以上,但儘可能少重複

W     匹配任意不是字母,數字,下劃線,漢字的字符
S     匹配任意不是空白符的字符
D     匹配任意非數字的字符
B     匹配不是單詞開頭或結束的位置
[^x]     匹配除了x以外的任意字符
[^aeiou]     匹配除了aeiou這幾個字母以外的任意字符

常用的規則

精確匹配

location = / { proxy_pass http://127.0.0.1:9090/ }


將所有請求直接轉發給服務器的9090端口。

處理靜態文件

#目錄匹配 location ^~ /static/ { root /webroot/static/; } #後綴匹配 location ~* .(gif|jpg|jpeg|png|css|js|ico)$ { root /webroot/res/; }


轉發動態請求到後端應用服務器

#將/account/開始的請求轉發給Account服務器 location /account/ { proxy_pass http://127.0.0.1:8080/ } #將/order/開始的請求轉發給Order服務器 location /order/ { proxy_pass http://127.0.0.1:9090/ }


rewrite指令

  • last 相當於apache裡面的[L]標記,表示rewrite。

  • break 本條規則匹配完成後,終止匹配,不再匹配後面的規則。

  • redirect 返回302臨時重定向,瀏覽器地址會顯示跳轉後的URL地址。

  • permanent 返回301永久重定向,瀏覽器地址會顯示跳轉後的URL地址。

  • 使用last和break實現URI重寫,瀏覽器地址欄不變。

  • 使用alias指令必須用last標記;使用proxy_pass指令時,需要使用break標記。

  • last標記在本條rewrite規則執行完畢後,會對其所在server{……}標籤重新發起請求,而break標記則在本條規則匹配完成後,終止匹配。


[kyec555 ] Nginx正則表達式相關的參數和規則介紹已經有710次圍觀

http://coctec.com/docs/nginx/show-post-234925.html