Nginx服务的rewrite模块(理论详解)
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,Rewrite跳转场景URL看起来更规范,合理;企业会将动态URL地址伪装成静态地址提供服务;网址换新域名后,让旧的访问跳转到新的域名上;服务端某些业务调整。Rewrite跳转实现Rewrite实用场
千家信息网最后更新 2025年01月31日Nginx服务的rewrite模块(理论详解)
Rewrite跳转场景
- URL看起来更规范,合理;
- 企业会将动态URL地址伪装成静态地址提供服务;
- 网址换新域名后,让旧的访问跳转到新的域名上;
- 服务端某些业务调整。
Rewrite跳转实现
Rewrite实用场景
Nginx跳转需求的实现方式
- 使用rewrite进行匹配跳转
- 使用if匹配全局变量后跳转
- 使用location匹配再跳转
rewrite放在server{},if{},location{}段中
对域名或参数字符串
- 使用if全局变量匹配
- 使用proxy_pass反向代理
常用的正则表达式元字符
字符 | 说明 |
---|---|
^ | 匹配输入字符串的起始位置 |
$ | 匹配输入字符串的结束位置 |
* | 匹配前面的字符零次或多次 |
+ | 匹配前面的字符一次或多次 |
? | 匹配前面的字符零次或一次 |
. | 匹配除\n之外的任何单个字符,使用诸如"[.\n]"之类的模式,可匹配包括"\n"在内的任意字符 |
\d | 匹配纯数字 [0-9] |
{n} | 重复多次 |
{n,} | 重复n次或更多次 |
[c] | 匹配单个字符c |
[a-z] | 匹配a-z小写字母的任意一个 |
[a-zA-Z] | ] 匹配a-z小写字母或A-Z大写字母的任意一个 |
Rewrite命令
语法:
rewrite [flag]; 正则 跳转后的内容 rewrite支持的flag标记
flag标记说明
标记 | 说明 |
---|---|
last | 相当于Apache的[L]标记,表示完成rewrite |
break | 本条规则匹配完成即终止,不再匹配后面的任何规则 |
redirect | 返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新url |
permanent | 返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫更新url |
last和break比较
last | break | |
---|---|---|
使用场景 | 一般写在server和if中 | 一般使用在location中 |
URL匹配 | 不终止重写后的url匹配 | 终止重写后的url匹配 |
location分类
location = patt {} [精准匹配]location patt {} [一般匹配]location ~ patt {} [正则匹配]
正则匹配的常用表达式
标记 | 说明 |
---|---|
~ | 执行一个正则匹配,区分大小写 |
~* | 执行一个正则匹配,不区分大小写 |
!~ | 执行一个正则匹配,区分大小写不匹配 |
!~* | 执行一个正则匹配,不区分大小写不匹配 |
^~ | 普通字符匹配;使用前缀匹配。如果匹配成功,则不再匹配其他location |
= | 普通字符精准匹配。也就是完全匹配 |
@ | 定义一个命名的location,使用在内部定向时 |
location优先级
相同类型的表达式,字符创长的会优先匹配
按优先级排列
- = 类型
- ^~ 类型表达式
- 正则表达式(~和~*)类型
- 常规字符串匹配类型,按前缀匹配
- 通常匹配(/),如果没有其他匹配,任何请求都会匹配到
比较rewrite和location
相同点
都能实现跳转
不同点
- rewrite是在同一域名内更改获取资源的路径
- location是对一类路径做控制访问或方向代理,还可以proxy_pass到其他机器
rewrite会写在location里执行顺序 - 执行server块里面的rewrite指令
- 执行location匹配
- 执行选定的location中的rewrite指令
location优先级的示例
##精确匹配/,主机名后面不能带任何字符串location = / {[ configuration A ] }##所有的地址都以/开头,这条规则将匹配到所有请求,但正则和最长字符串会优先匹配location / {[ configuration B ] }##匹配任何以/documents/开头的地址,当后面正则表达式没有匹配到时,才起作用location /documents/ {[ configuration C ]}##匹配任何以/documents/abc开头的地址,当后面正则表达式没有匹配到时,才会起作用location ~ /documents/abc {[ configuration D ]}##以/images/开头的地址,匹配符合后,停止往下匹配location ^~ /images/ {[ configuration E ]}##匹配所有以gif结尾的请求,/images/下的图片会被[configuration E]处理,因为^~的优先级更高location ~* \.(gif|jpg|jpeg)$ {[ configuration F ]}##最长字符匹配到/images/abc,优先级最低location /images/abc {[ configuration G ]}##以/images/abc开头的,优先级次之location ~ /images/abc {[ configuration H ]}##如果和正则~/images/abc/1.html相比,正则优先级更高location /images/abc/1.html {[ configuration I ]}
location优先级规则
匹配某个具体文件
(location =完整路径) > (location ^~完整路径) > (location ~*完整路径) > (location ~完整路径) > (location 完整路径) > (location /)
用目录做匹配访问某个文件
(location=目录) > (location ^~目录/) > (location~目录)>(location ~*目录) > (location 目录) > (location /)
字符
正则
地址
优先级
表达式
路径
目录
字符串
开头
标记
类型
域名
大小
规则
场景
字母
服务
普通
最长
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
拼多多手机软件开发商
苹果6下载找不到服务器
医保异地备案显示服务器繁忙
无锡个人软件开发创新服务
数据库引擎架构图
设计模式在软件开发中应用
伦教网络安全哪家强
做网盘服务器要多大的
金蛙服务器
互联网方面高科技人才
华南师范大学网络技术
软件开发公司推广渠道
武汉中合房网络技术
邮政储蓄使用的数据库是
车联网中的网络技术
云服务器安全组是什么意思
bi数据库开发
互联网郑州信息科技
工信 网络安全职责
网络安全终极奥义
单位网络安全整改计划
挂中国的vpn代理服务器
鄢陵佰世通网络技术服务有限公司
运用网络技术会计造假案例
软件开发方向学什么需要
什么叫 专利数据库
设计网站销售管理系统数据库
那些大学考研有网络安全课程
由于远程服务器繁忙
深圳软件开发者一般多少钱