Nginx服务的跳转Rewrite、正则表达式


前言

现在Nginx已经成为很多公司作为前端反向代理(proxy_ pass) 服务器的首选,在实际工作中往往会遇到很多跳转( 重写URL)的需求。
比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。如果在后端使用的Apache 服务器,虽然也能做跳转,规则库也很强大,但是用Nginx 跳转效率会更高


一、Rewrite实际场景

1、配置跳转的原因

  • 为了让URL看起来更规范、合理
  • 企业会将动态URL地址伪装成静态地址提供服务
  • 网址换新域名后,期望用户可以通过旧的访问跳转到新的域名上
  • 服务端某些业务调整

2、Nginx跳转需求的实现方式

  • 使用rewrite进行匹配跳转(主要匹配的是具体的路径)
  • 使用if匹配全局变量后跳转,结合布尔值时间true和fales的跳转
  • 使用location匹配再跳转(可以匹配后执行proxy_pass,将请求跳转到其他服务上)

3、rewrite如何实现跳转

  • nginx服务基于http协议rewrite重写mudule模块
  • nginx:主从URL重写,其中有一个布尔值:返回值的结果只有true或者false;同时特性:只支持if单分支语句
  • 跳转:循环最多可以执行10次,超过后nginx将返回500错误
  • PCRE支持:perl兼容正则表达式的语法规则匹配
  • 重写模块set指令:自己设置即可以使用布尔值

如下:标志位参数:$1:具体的路径,即标志位
www.baidu.com/bbs/install/index.php ##URL
www.baidu.com ##URI $0
/bbs/install/index.php ## $1

3、rewrite功能

  • rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。
    • 比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求

4、rewrite生效位置

  • rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用,
    • 例如http:/ /www . dabao. com/a/we/ index。php?id=1&u=str 只对/a/we/ index . php重写
      在这里插入图片描述

5、rewrite 执行顺序

  • 执行server 模块里面的rewrite 指令。
  • 执行选定的location 中的rewrite 指令。
  • 执行选定的location中 if中的rewrite指令
    示例:
    http {
    server {
    rewrite #优先级1
    location ~*.(jpgIgif|swf)$ {
    rewrite #优先级2
    valid_ referers none blocked *.dog.com dog.com;
    if ( $invalid referer ) {
    rewrite ^/ http: L /www. dog. com/error.png; #优先级3
    }
    }
    }
    }

6、对域名或参数字符串

  • 使用if全局变量匹配
  • 使用proxy_ _pass反向代理
    • 把服务端的请求交给后面的服务处理
      首先ip地址定位,如何定位,
upstream apache_server {			##定义的是动态处理服务的地址池
apache-1_ip:端口
apache-2_ip:端口
}
通过location内的正常匹配去调用apache_server
location {
proxy_pass apache_server
} 

apache_server:是一个函数,是可以自定义**_server,需要upstream和location名字一致

二、Nginx正则表达式

1、字符说明

^	匹配输入字符串的起始位置
$	匹配输入字符串的结束位置
*	匹配前面的字符0次或多次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值