nginx rewrite重写

 ̄綄美尐妖づ 提交于 2020-01-24 12:28:11

Nginx Rewrite重写

引言:对于rewrite是什么?大家看字面意思就是重写的意思,重写是什么?不知道的人如果去百度rewrite,竟然会百度出来一部动漫?

enmm,还是打全rewrite去了解一下情况比较好。

Rewrite跳转场景

#URL看起来更规范,合理

#企业会将动态URL地址伪装成静态地址提供服务

#网址换新域名后,让旧的访问跳转到新的域名上

#服务端某些业务调整

Rewrite 跳转实现

模块全称:ngx_http_rewrite_module

Nginx:支持资源定位URL重写,支持if条件判断,但不支持else

PCRE支持

跳转:循环最多可以执行10次,超过后nginx将返回500错误

重写模块set指令

rewrite使用Nginx全局变量或自己设置的变量,结合正则表达式和标志位实现URL重写以及重定向

Rewrite实用场景

Nginx跳转需求的实现方式

#使用rewrite进行匹配跳转

#使用if匹配全局变量后跳转

#使用location匹配再跳转

rewrite放在server{},if{},location{}段中
对域名或参数字符串

#使用if全局变量匹配

#使用proxy_pass反向代理

Nginx正则表达式

#常用的正则表达式元字符

^:匹配输入字符串的起始位置(符号像牛角,所以是起始)

$:匹配输入字符串的结束位置(符号像牛尾巴绕树上,所以是结尾)

*:匹配前面的字符零次或多次

+:匹配前面的字符一次或多次

?:匹配前面的字符零次或一次

.:匹配除“\n”之外的任何单个字符。使用诸如“[.\n]”之类的模式,可匹配包括“\n"在内的任意字符

\:将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用

\d:匹配纯数字

{n}:重复n次

{n,}:重复n次或更多次

[c] :匹配单个字符

[a-z] :匹配a-z小写字母的任意一个

[a-zA-Z] :匹配a-z小写字母或A-Z大写字母的任意一个

Rewrite命令

语法

rewrite [flag];

​ 正则 跳转后的内容 rewrite支持的flag标记

last和break比较

last break

使用场景 一般写在server和if中 一般使用在location中

URL匹配 不终止重写后的url匹配 终止重写后的url匹配

小结:这次对nginx rewrite的内容有了一些大概的了解,下次我们将继续做几个实验来看看rewrite的应用场景。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!