nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > nginx rewrite参数

nginx rewrite参数解析

投稿:hebedich

这篇文章主要介绍了nginx rewrite参数解析的相关资料,需要的朋友可以参考下

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

1、先看一个nginx配置

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

stringObject.replace(regexp/substr, replacement)

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

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

2.2、正则匹配重写例子

name = "Tom, Jerry";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
'Jerry Tom'
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参数,下期继续分享。

到此这篇关于nginx rewrite参数解析的文章就介绍到这了,更多相关nginx rewrite参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文