Nginx重写功能rewrite

目录

一、Rewrite简单介绍

1、Rewrite的概述

2、Rewrite跳转场景

3、URI、URL、URN

4、Rewrite跳转实现

5、Rewrite实际场景 

6、Nginx正则表达式

7、Rewrite执行顺序

二、location简单介绍

1、location的分类

2、location 常用的匹配规则

3、location的优先级

4、location示例说明

5、实际网站使用中,至少有三个匹配规则定义

5.1 第一个必选规则

5.2 第二个必选规则是处理静态文件请求

5.3 第三个规则就是通用规则

三、Rewrite示例

1、基于域名跳转

1.1 修改配置文件

1.2 重启服务并添加映射关系

1.3 创建网页(在100网段中配置网页)

1.4 浏览器中访问测试

2、基于客户端 IP 访问跳转

2.1 服务端修改配置文件

2.2 检查配置文件并重启服务

2.3  创建跳转后的网页目录和内容

2.4 测试

3、基于旧域名跳转到新域名后面加目录

3.1 修改主配置文件

3.2 重启服务并创建网页文件

3.3 添加映射关系并使用浏览器访问测试

4、基于参数匹配的跳转

4.1 修改配置文件

4.2 重启服务

4.3 浏览器访问测试

5、基于目录下所有 php 结尾的文件跳转

5.1 修改配置文件

5.2 重启服务

5.3 浏览器访问测试

6、基于最普通一条 url 请求的跳转

6.1 修改配置文件

6.2 重启服务

6.3 浏览器访问测试


一、Rewrite简单介绍

1、Rewrite的概述

rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向

rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用

2、Rewrite跳转场景

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

3、URI、URL、URN

  • URI:是统一资源标识符,可以唯一标识一个资源
  • URL:是统一资源定位符,可以提供找到该资源的路径
  • URN:名称定位

4、Rewrite跳转实现

ngx_http_rewrite_module这个模块来实现跳转功能

5、Rewrite实际场景 

Nginx跳转需求的实现方式

  • 使用rewrite进行匹配跳转
  • 使用if匹配全局变量后跳转
  • 使用location匹配再跳转

rewrite放在 server{},if{},location{}段中

  • location只对域名后边的除去传递参数外的字符串起作用

对域名或参数字符串

  • 使用if全局变量匹配
  • 使用proxy_pass反向代理

6、Nginx正则表达式

Nginx正则表达式
字符 涵义以及示例
^ 匹配输入字符串的起始位置
$ 匹配输入字符串的结束位置
* 匹配前面的字符零次或多次;如“ol*”能匹配“o”及“ol”、“oll”
+ 匹配前面的字符一次或多次;如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
? 匹配前面的字符零次或一次;例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
. 匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式
\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“$”则匹配“$”
\d 匹配纯数字
\s 匹配空的(空格或者制表符)
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n,m} 重复 n 到 m 次
[ ] 定义匹配的字符范围
[c] 匹配单个字符 c
[a-z] 匹配 a-z 小写字母的任意一个
[a-zA-Z0-9] 匹配所有大小写字母或数字
() 表达式的开始和结束位置
| 或运算符

7、Rewrite执行顺序

  1. 执行 server 块里面的 rewrite 指令
  2. 执行 location 匹配
  3. 执行选定的 location 中的 rewrite 指令

语法: rewrite [flag];

regex :表示正则匹配规则

replacement :表示跳转后的内容

flag :表示 rewrite 支持的 flag 标记

###flag标记说明###

last :本条规则匹配完成后,继续向下匹配新的location URI规则,一般用在 server 和 if 中

break :本条规则匹配完成即终止,不再匹配后面的任何规则,一般使用在 location 中

redirect:返回302临时重定向,浏览器地址会显示跳转后的URL地址

permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。

二、location简单介绍

1、location的分类

  • 精准匹配:location = / {}
  • 一般匹配:location / {}
  • 正则匹配:location ~ / {}

2、location 常用的匹配规则

</
location 常用的匹配规则
字符 含义
= 进行普通字符精确匹配,也就是完全匹配
^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 location
~ 区分大小写的匹配
~* 不区分大小写的匹配
!~ 区分大小写的匹配取非
!~* 不区分大小写的匹配取非
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值