Nginx如何rewrite
文章目录
前言
一、Rewrite介绍
1.1:Rewrite跳转场景
1.2:Rewrite跳转实现
1.3:Rewrite实际场景
1.4:Nginx正则表达式
二、Rewrite命令介绍
2.1:Rewrite命令语法
2.2:flag标记说明
2.3:last和break的区别
三、location介绍
3.1:location的分类
3.1.1:正则匹配的常用表达式
3.2:location优先级
3.3:比较rewrite和location
3.4:location优先级规则
3.5:location优先级示例
四、应用实例
4.1:基于域名的跳转
4.1.1:需求
4.1.2:配置
4.1.3:验证
4.2:基于客户端Ip访问跳转
4.2.1:需求
4.2.2:配置
4.2.3:验证
4.3:基于新、旧域名跳转
4.3.1:需求
4.3.2:配置
4.3.3:验证
4.4:基于参数匹配跳转
4.4.1:需求
4.4.2:配置
4.4.3:验证
4.5:基于最普通URL请求的跳转
4.5.1:需求
4.5.2:配置
4.5.3:验证
前言
ngx_http_rewrite_module
模块用于使用PCRE正则表达式更改请求URI,返回重定向并有条件地选择配置
一、Rewrite介绍
1.1:Rewrite跳转场景
- URL看起来更规范、合理
- 企业会将动态URL地址伪装成静态地址提供服务
- 网址换新域名后,让旧的访问跳转到新的域名上
- 服务端某些业务调整
1.2:Rewrite跳转实现
1.3:Rewrite实际场景
- Nginx跳转需求的实现方式
- 使用rewrite进行匹配跳转
- 使用if匹配全局变量后跳转
- 使用location匹配再跳转
- rewrite放在server{},if{},location{}段中
- location只对域名后边的除去传递参数外的字符串器作用
- 对域名或参数字符串
- 使用if全局变量匹配
- 使用proxy_pass反向代理
1.4:Nginx正则表达式
字符 | 说明 |
---|---|
^ | 匹配输入字符串的起始位置 |
$ | 匹配输入字符串的结束位置 |
* | 匹配前面的字符零次或多次 |
+ | 匹配前面的字符一次或多次 |
? | 匹配前面的字符灵草零次或一次 |
. | 匹配除"\n"之外的任何单个字符 |
\ | 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用 |
\d | 匹配纯数字 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
[c] | 匹配单个字符c |
[a-z] | 匹配a-z小写字母的任意一个 |
[a-zA-Z] | 匹配a-z小写字母或A-Z大写字母的任意一个 |
- 使用诸如 “[.\n]” 之类的模式,可匹配包括 “\n” 在内的任意字符