nginx rewrite參數(shù) 以及 $1、$2參數(shù)解析(附有生產(chǎn)配置實例)

在nginx的配置中,是否對rewrite的配置模糊不清,還有令人迷惑的$1、$2...參數(shù),(其實$1、$2參數(shù)在shell腳本中經(jīng)常用到,用來承接傳遞的參數(shù))。本篇從反向代理配置的角度幫助理解一下

1、先看一個nginx配置

rewrite ^/(user_\d)/(\d).html$ https://$host/?$1 permanent;

上面是我寫的重寫規(guī)則,先說$代表的是參數(shù),所以一定是 () 包含的

  • () : 用于匹配括號之間的內(nèi)容,通過$1、$2調(diào)用

  • $1 就是 user_\d

  • $2 就是 \d

舉個例子

https://www.example.com/user_1/2.html

這里$1 就是 user_1

$2就是2

這實際上就是正則在nginx里面的運用, 下面看一下 正則 的規(guī)則,會幫助你理解??

2、正則

2.1、replace

stringObject.replace(regexp/substr, replacement)

replacement 可以是字符串,也可以是函數(shù)。如果它是字符串,那么每個匹配都將由字符串替換。但是 replacement 中的 $ 字符具有特定的含義。如下表所示,它說明從模式匹配得到的字符串將用于替換。

字符 替換文本
1、2、...、$99 與 regexp 中的第 1 到第 99 個子表達(dá)式相匹配的文本。
$& 與 regexp 相匹配的子串。
$` 位于匹配子串左側(cè)的文本。
$' 位于匹配子串右側(cè)的文本。
$$ 直接量符號。

2.2、正則匹配重寫例子

  1. 參數(shù)匹配,互換位置
name = "Tom, Jerry";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
'Jerry Tom'
  1. 參數(shù)獲取
var str = '/pgk/api/pgk-abc'
var reg = /^\/pgk(.*)$/

str.replace(reg, "$1") // '/api/pgk-abc'



var str = '/pgk/api/pgk-abc/n/abc'
var reg = /^\/pgk\/api\/pgk-abc\/(.*)$/

str.replace(reg, "$1") // 'n/abc'

3、生產(chǎn)配置示例

下面是工作中的實際配置, 重寫系統(tǒng)簡稱 ABC

location /ABC/api/pgk-abc/ {
  rewrite ^/ABC/(.*)$ /$1 break;
  proxy_pass http://ip:port;
  # 這里重寫掉 ABC ,  $1 就是 api/pgk-abc/
  # 實際請求地址是: http://ip:port/api/pgk-abc/
  proxy_http_version 1.1;
}

本篇完, rewrite 相關(guān)的還有 break、last、permanent、redirect參數(shù),下期繼續(xù)分享。


我是 甜點cc?

微信公眾號:【看見另一種可能】

熱愛前端開發(fā),也喜歡專研各種跟本職工作關(guān)系不大的技術(shù),技術(shù)、產(chǎn)品興趣廣泛且濃厚。本號主要致力于分享個人經(jīng)驗總結(jié),希望可以給一小部分人一些微小幫助。

希望能和大家一起努力營造一個良好的學(xué)習(xí)氛圍,為了個人和家庭、為了我國的互聯(lián)網(wǎng)物聯(lián)網(wǎng)技術(shù)、數(shù)字化轉(zhuǎn)型、數(shù)字經(jīng)濟(jì)發(fā)展做一點點貢獻(xiàn)。數(shù)風(fēng)流人物還看中國、看今朝、看你我。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容