nginx
主页 > 服务器 > nginx >

nginx rewrite参数介绍

2022-11-24 | 佚名 | 点击:

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

1、先看一个nginx配置

1

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

上面是我写的重写规则,先说$代表的是参数,所以一定是 () 包含的

举个例子

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

这里$1 就是 user_1

$2就是2

这实际上就是正则在nginx里面的运用, 下面看一下 正则 的规则,会帮助你理解????

2、正则

2.1、replace

1

stringObject.replace(regexp/substr, replacement)

replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

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

2.2、正则匹配重写例子

1

2

3

name = "Tom, Jerry";

name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

'Jerry Tom'

1

2

3

4

5

6

7

8

9

10

11

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

1

2

3

4

5

6

7

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参数,下期继续分享。

原文链接:https://www.cnblogs.com/all-smile/p/16913087.html
相关文章
最新更新