目录
一、常用的正则表达式元字符
二、正则匹配的常用表达式
三、nginx跳转需求的实现方式
1、使用rewrite进行匹配跳转
①rewrite命令语法
②flag标记说明
2、使用if匹配全局变量后跳转
3、使用location匹配在跳转
①location分类
②location优先级
③location在每个server中至少出现3种
④location必选规则
四、rewrite和location区别
1、相同点
2、不同点
一、常用的正则表达式元字符 、^匹配输入字符串的起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或多次
+匹配前面的字符一次或多次
?匹配前面的字符零次或一次
.匹配除了"\n"之外的任何单个字符
\将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用
\d匹配纯数字
{n}重复n次
{n,}重复n次或更多次
[c]匹配单个字符c
[a-z]匹配小写字母任意一个
[a-zA-Z]匹配字母(不分大小写)
二、正则匹配的常用表达式 ~执行一个正则匹配,区分大小写
~*执行一个正则匹配,不区分大小写
!~执行一个正则匹配,区分大小写不匹配
!~*执行一个正则匹配,不区分大小写不匹配
^~普通字符匹配;使用前缀匹配。如果匹配成功,则不再匹配其他location
=普通字符精确匹配,也就是完全匹配
@定义一个命名的location,使用在内部定向时
三、nginx跳转需求的实现方式
1、使用rewrite进行匹配跳转 实现跳转的模块
rewrite放在server{}、if{}、location{}段中
location只对域名后边的除去传递参数外的字符串起作用
①rewrite命令语法
rewrite
②flag标记说明
last相当于apache的[L]标记,表示完成rewrite
break本条规则匹配完成即终止,不再匹配后面的任何规则
redirect返回302临时重定向,浏览器地址会显示跳转后的URL,爬虫不会更新URL
permanent 返回301永久重定向,浏览器地址栏会显示跳转后的地址
2、使用if匹配全局变量后跳转 实现跳转的条件
3、使用location匹配在跳转匹配URL后跳转的条件
①location分类
location = patt{}[精准匹配]
locationpatt{}[一般匹配]
location ~ patt{}[正则匹配]
②location优先级
【log4j|nignx配置文件种的跳转】精确性越高,优先级越大
相同类型的表达式,字符串长的会优先匹配
1)=类型
2)^~类型表达式(普通字符前缀匹配)
3)正则表达式(~和~*)类型~区分大小写~*不区分大小写(考虑匹配的对象是文件还是目录)对于文件而言不区分大小写优先级比区分高;对于目录而言区分大小写优先级比不区分高(资源消耗)
4)常规字符串匹配类型,按前缀匹配
5)通用匹配(/),如果没有其他匹配,任何请求都会匹配到
③location在每个server中至少出现3种
1)静态匹配
2)动态匹配
3)根匹配
④location必选规则
1)
直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网,可以是一个静态首页,也可以直接转发给后端“应用服务器”
2)
第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项(静态请求处理的能力+高并发处理能力+资源消耗较低)有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
3)
第三个规则就是通用规则,比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器,非静态文件请求就默认是动态请求(跳转/反向代理)
四、rewrite和location区别
1、相同点 都能实现跳转,都能对原访问URL进行改写、跳转
2、不同点 ① rewrite是在同一域名内更改获取资源的路径
② location是对一类路径做控制访问或反向代理,还可以proxy_pass到其他机器
推荐阅读
- java|apache中的ab压测
- 面试题|MySQL高性能实战——part5——查询性能优化
- 杭电计算机考研|数据库面试常见问题
- mysql|MySQL教程 - 视图(View)
- c#|C# FileSystemWatcher 多文件夹、多文件类型文件监控增加、修改、重命名和删除实例
- java|Java并发编程71道面试题及答案,让你的面试稳如泰山
- springboot|springboot集成redis防止页面重复提交
- java|SpringBoot+Redis,防止数据重复提交
- AOP|Springboot + redis 使用AOP实现防止重复提交问题