关于前端:nginx-rewrite参数-以及-12参数解析附有生产配置实例

40次阅读

共计 1292 个字符,预计需要花费 4 分钟才能阅读完成。

在 nginx 的配置中,是否对 rewrite 的配置模糊不清,还有令人蛊惑的 $1、$2... 参数,(其实 $1、$2 参数在 shell 脚本中常常用到,用来承接 传递的参数)。本篇从反向代理配置的角度帮忙了解一下

1、先看一个 nginx 配置

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

下面是我写的 重写规定,先说 $ 代表的是参数,所以肯定是 () 蕴含的

  • () : 用于匹配括号之间的内容,通过 $1$2 调用
  • $1 就是 user_\d
  • $2 就是 \d

举个例子

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

这里$1 就是 user_1

$2就是 2

这实际上就是正则在 nginx 外面的使用,上面看一下 正则 的规定,会帮忙你了解👇

2、正则

2.1、replace

stringObject.replace(regexp/substr, replacement)

replacement 能够是字符串,也能够是函数。如果它是字符串,那么每个匹配都将由字符串替换。然而 replacement 中的 $ 字符具备特定的含意。如下表所示,它阐明从模式匹配失去的字符串将用于替换。

字符 替换文本
$1、$2、…、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$’ 位于匹配子串右侧的文本。
$$ 间接量符号。

2.2、正则匹配重写例子

  1. 参数匹配,调换地位
name = "Tom, Jerry";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
'Jerry Tom'
  1. 参数获取
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、生产配置示例

上面是工作中的理论配置, 重写零碎简称 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 相干的还有 break、last、permanent、redirect 参数,下期持续分享。


我是 甜点 cc

微信公众号:【看见另一种可能】

酷爱前端开发,也喜爱专研各种跟本职工作关系不大的技术,技术、产品趣味宽泛且浓重。本号次要致力于分享集体经验总结,心愿能够给一小部分人一些渺小帮忙。

心愿能和大家一起致力营造一个良好的学习气氛,为了集体和家庭、为了我国的互联网物联网技术、数字化转型、数字经济倒退做一点点奉献。数风流人物还看中国、看今朝、看你我。

正文完
 0