Nginx Rewrite

Nginx Rewrite

基于本地服务器路径的重写

Rewrit

Rewrite跳转场景

1、可以让URL,看起来更规范、合理
2、企业中会将动态URL地址伪装成静态URL来提供服务
3、网址更换新域名后,让旧的域名跳转到新的域名上
4、服务端一些业务调整

Rewrite跳转实现

1.Nginx是通过ngx_http_rewrite_module模块支持url重写、支持if条件判断,但不支持else。
2.另外该模块需要 PCRE支持,应在编译Nginx时指定PCRE 支持,默认已经安装。
3.根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可以执行10次,超过后Nginx将返回500错误。
4.重写模块包含set指令,来创建新的变量并设其值,这在有些情景下非常有用的,如记录条件标识、传递参数到其他location、记录做了什么等等。
5.rewrite功能就是使用Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

Rewrite跳转实际场景

nginx跳转需要的实现方式
使用rewrite进行匹配跳转(防盗链)

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

使用location匹配再跳转(匹配的访问 路径URL location可以匹配本地的重写以及跨服务器的跳转)
rewrite放在server{}, if{},location{}段中
location只对域名后边的除去传递参数外的字符串起作用。
多个server模块 sever模块里包含location location包含if if里面包含rewrite
对域名或参数字符串
使用if全局变量匹配
使用proxy_pass反向代理

常见的Nginx的正则表达式

匹配符 说明
^ 匹配输入字符串的起始位置
$ 匹配输入字符串的结束位置
* 匹配前面的字符零次或多次
+ 匹配前面的字符字词或多次
匹配前面的字符零次或一次
. 匹配除“\n”之外的任何单个字符
\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用
\d 匹配纯数字
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m 次
[] 定义匹配字符范围
[c] 匹配单个字符c
[a-z] 匹配a-z小写字母的任意一个
[a-zA-Z0-9] 匹配所有大小写字母或数字
() 表达式开始和结束位置
l 或运算符

Rewirte语法

rewrite < regex > < replacement > [flag]
regex:正则表达式
replacement :跳转后的内容
flag:rewrite支持的flag标记
flag标记
标记 说明
last 相当于Apache的【L】标记,表示完成rewrite
break 本条规则匹配完成即终止,不在匹配后面的任何规则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值