nginx locating匹配问题(1) ---cookie
* ^ : 匹配字符串的开始位置
* $ : 匹配字符串的结束位置
* .* : .匹配任意字符, *匹配数量0到正无穷;
* \. ---》斜杠用来转义 \.代表匹配一个。
* (值1|值2|值3|值4):或匹配模式,例:(jpg|gif|png|bmp)匹配jpg或gif或png或bmp匹配的优先级 : =(精确匹配) ^~(开头匹配) ~(正则匹配)
* = 表示精确匹配
* ^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
* ~ 正则匹配(区分大小写)
* ~* 正则匹配(不区分大小写)
* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
* / 任何请求都会匹配
匹配时 :有关是否区分大小写匹配
~ -->代表区分大小写匹配
~* -->代表不区分大小写匹配
文件及目录的匹配
* -f和!-f用来判断是否存在文件
* -d和!-d用来判断是否存在目录
* -e和!-e用来判断是否存在文件或目录
* -x和!-x用来判断文件是否可执行
rewrite:
rewrite指令的最后一项参数为flag标记,flag标记有:
1.last 相当于apache里面的[L]标记,表示rewrite。
2.break本条规则匹配完成后,终止匹配,不再匹配后面的规则。
3.redirect 返回302临时重定向,浏览器地址会显示跳转后的URL地址。
4.permanent 返回301永久重定向,浏览器地址会显示跳转后的URL地址。
return 指令:
语法:return code ;
使用环境:server,location,if;
该指令用于结束规则的执行并返回状态码给客户端。示例:如果访问的URL以".sh"或".bash"结尾,则返回403状态码
location ~ .*\.(sh|bash)?$
{return 403;
}
禁止访问以/data开头的文件
location ~ ^/data
{deny all;
}
正则表达式的前后看匹配
要理解?=和?!,首先需要理解前瞻,后顾,负前瞻,负后顾四个概念:
// 前瞻:
exp1(?=exp2) 查找exp2前面的exp1
// 后顾:
(?<=exp2)exp1 查找exp2后面的exp1
// 负前瞻:
exp1(?!exp2) 查找后面不是exp2的exp1
// 负后顾:
(?<!exp2)exp1 查找前面不是exp2的exp1
举例:
"中国人".replace(/(?<=中国)人/, "rr") // 匹配中国人中的人,将其替换为rr,结果为 中国rr
"法国人".replace(/(?<=中国)人/, "rr") // 结果为 法国人,因为人前面不是中国,所以无法匹配到
要理解?:则需要理解捕获分组和非捕获分组的概念:
()表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)
(?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来
rewrite 后结尾 为last 和 break的区别
rewrite ^/aaa/(.*) /bbb/$1 last;
- last: 将url进行重写后会在此进入这个server,重新进行匹配;
rewrite ^/aaa/(.*) /bbb/$1 break;
- break: 不会再次进入这个server,而是直接按照重写的这个url进行匹配;
nginx locating匹配问题(1) ---cookie相关推荐
- nginx转发html文件,Nginx 转发匹配规则的实现
一.正则表达式匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配 -f 和 !-f 用来判断是否存在文件 -d 和 ...
- nginx 正则匹配优化(一)
nginx 正则匹配优化(一) 背景 在 IPV6 改造方案中使用了大量正则匹配进行域名改写,使用perf 进行分析,pcre_exec 是主要热点. 如何优化? 减少输入规模 使用pcre_jit ...
- [转载+整理]Nginx Location匹配规则
目录 规则语法 location 分类 匹配顺序: 扩展 location / {}和 location =/ {}的区别 测试 规则语法 语法 匹配规则 空 普通匹配(遵循最大前缀匹配规则, 优先度 ...
- nginx proxy_pass匹配路径
nginx proxy_pass 匹配情况 在nginx中配置proxy_pass代理转发时, 如果在proxy_pass后面的url中含有/,表示绝对根路径,匹配的location 路径就不在url ...
- .net 匹配html图片url_后端程序员不得不会的 Nginx 转发匹配规则
一.正则表达式匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配 -f 和 !-f 用来判断是否存在文件 -d 和 ...
- nginx location 匹配 多个规则_你需要知道的Nginx配置二三事
Nginx是俄罗斯人Igor Sysoev基于C语言编写的十分轻量级的HTTP服务器,它主要有以下特点: 它是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器 ...
- 后端程序员不得不会的 Nginx 转发匹配规则
一.正则表达式匹配 ~ 为区分大小写匹配 ~* 为不区分大小写匹配 !~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配 二.文件及目录匹配 -f 和 !-f 用来判断是否存在文件 -d 和 ...
- nginx location 匹配 多个规则_nginx配置location与rewrite规则教程
nginx配置location与rewrite规则教程 location 教程 示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ...
- 浅谈Nginx转发匹配规则
转自:微点阅读 https://www.weidianyuedu.com 一.正则表达式匹配 1. ~ 为区分大小写匹配 2. ~* 为不区分大小写匹配 3. !~ 和 !~ ...
最新文章
- CentOS 6.3下Strongswan搭建IPSec ***(ipsec.conf配置文件有讲解)
- jmh气象传真图网站_在冬奥滑雪场,他凭着气象信息,念好一本生意经
- 12.集合:在我的世界里,你就是唯一 / 不可变集合
- 一个备份sql server文件.bak还原成两个数据库
- C正数负数的原码补码反码以及内存地址分析
- Java案例:统计文本中所有整数之和
- 有趣的算法(八):3分钟看懂选择排序(C语言实现)
- 7-11 mmh学长的万能日历 (20分)
- gimp中文版教程_Gimp中文经典入门实用教程.pdf
- 【VBA编程】VBA基础语法(一)
- steam插件_Steam是如何了解一款游戏的?看了这篇文章会让你豁然开朗!
- 微商模式的出路在哪里?
- 理解flask中的蓝图
- 安装PHP7.4找不到包error: Package requirements (oniguruma) were not met错误
- 腾讯云手游安全MTP怎么样?腾讯云手游安全MTP值得入手吗?
- 几种混沌系统混沌模型
- 一般人不会的电脑小绝技(ZT)
- 全球与中国环氧腻子棒市场现状及未来发展趋势
- python杨辉三角居中_利用python打印杨辉三角
- 百度搜索排名API接口PC返回JSON数据格式