位置: IT常识 - 正文

nginx location 正则匹配

发布时间:2023-06-15

nginx的location正则匹配是什么呢?不知道的小伙伴来看看小编今天的分享吧!
613/auto1686643643nginx location 正则匹配

Location根据类型分为两种:普通配置和正则匹配

一、 普通配置

普通location根据使用方法又分为两种,格式如下:

1. location / {

命令序列

}

解释:括号中定义的表示对当前路径及子路径下的所有对象有效。“优先级最低”

用户所有的请求都能被它匹配到。

例子:

location / {

root /web;

相应策略

}

这说明网页根目录在/web

访问的时候直接http://127.0.0.1或是域名就可以了

用户所有的请求都能被它匹配到

location /bbs {

root "/web";

相应策略

}

这就说明网页根目录是位于 /web/bbs

访问的时候直接http://127.0.0.1/bbs就可以了

当用户访问

http://127.0.0.1/bbs/

或是

http://127.0.0.1/bbs/子路径

的时候才能被上边的路径匹配到。

问题:当用户访问http://127.0.0.1/bbs/a.html时

这两段location 同时存在时如下,那么哪段配置会生效呢?

server {

listen 80;

server_name www.benet.com;

index index.html;

location / {

root /web;

}

location /bbs {

root /web;

}

结论就是,

当用户请求的(/bbs)url同时匹配到两段location时,

最大前缀生效(location /bbs生效)

如果没有这段(location /bbs) 第一段生效。

第一段相当于默认策略,因为location / 包含所有的请求,所有的请求都是以 ”/” 开始的

2. location = /路径 {

命令序列

}

解释:括号中定义的表示对当前路径有效,子路径不生效(精确匹配指定的路径不包括子路径)。“它的优先级最高。”

例子:

location = /prefix {

}

也就是用户访问www.benet.com/prefix能被上边的location匹配到,它只匹配"/prefix",

"/"下的子路不匹配。

用户访问www.benet.com/prefix/a 就不能被它匹配到

优先级最高:指的是一旦匹配到此location ,立即生效。其它location无论是否匹配到请求都不生效。

例子:

location /prefix/ {

root /;

}

location = /prefix/ {

return 500;

}

二、 正则匹配

正则匹配也分为两种:

1. location ~ URI {}

~匹配的文件是区分字符 大小写的

2.location ~* URI {} :

~*匹配的文件是不区分字符大小的

正则匹配是按照正则location编写的顺序生效的,一旦匹配成功即停止匹配到后续的location。

例子:

location ~ /bbs {

return 400;

}

location ~* /bbs {

return 500;

}

网页返回错误信息400

然后将两段配置调换一下位置

location ~* /bbs {

return 500;

}

location ~ /bbs {

return 400;

}

三、匹配顺序和生效顺序

匹配顺序和生效顺序是两个概念

当配置中出现多个locaton并且普通和正则都有,那么

1、匹配顺序是:

用户请求的URL

(1)先匹配普通location

普通location在匹配是按照编辑顺序匹配

(2)在匹配正则location

正则location在匹配时按照编辑顺序匹配

但是正则和普通locaiton不按照编辑顺序匹配

2、生效顺序

当普通和正则都存在的情况下,遵循以下原则

1.nginx开始按照编辑顺序依次匹配普通location

(1)如果匹配过程中匹配到了

"location =" :nginx会立即生效即停止后续的匹配

(2)如果没有"locaiton ="话,

如果匹配到"locatin ^~"。会停止后续的正则匹配

然后最大前缀locaiton生效

最后是location / 生效

(3) 如果以上两种location都不存在的话

nginx会匹配所有location后看后续有没有正则locaion

如果后续没有正则locaiton

然后最大前缀locaiton生效

最后是location / 生效

如果后续还有正则location

一旦匹配成功一条正则locaion,这条会生效,并且会停止后续的正则匹配,还会会覆盖前边的普通location结果

以上就是小编今天的分享了,希望可以帮助到大家。

本文链接地址:https://www.jiuchutong.com/zhishi/2769.html 转载请保留说明!

上一篇:php获取当前时间(php获取当前时间的函数)

下一篇:ppt布尔运算工具在哪里(ppt布尔运算工具在哪里2007)

  • 个人开具服务费发票税率
  • 关税计算怎么算?
  • 商铺属于固定资产还是无形资产
  • 两处工资薪金所得
  • 医疗服务有增值业务吗
  • 现金流量表填报说明
  • 税务局的信用等级是多少
  • 银行电子承兑汇票怎么转让
  • 递延税款负债在资产负债表哪个科目
  • 转让专利属于什么分配
  • 出口企业如何做锁汇
  • 建设厂房需要几个证
  • 属于制造费用的有
  • 金税三期个人所得税怎么下载
  • 设备安装增值税适用税率
  • 开通税种需要带发票吗
  • 员工借款收不回来账务处理
  • 个人代开专票季未超30万附加税需要交吗
  • 本月无票收入到下月开具如何申报
  • 土地增值税加计5%扣除年限
  • 企业注销时资本公积怎么处理
  • 退税指导
  • 企业所得税法的主要内容
  • 失控发票一定要盖章吗
  • 一般纳税人附加税费减免政策
  • 进项税额转出会计处理
  • 跨年的费用冲回会计分录
  • laravel 微服务架构
  • php cgi配置
  • mac菜单键怎么设置出来的
  • 入库的原材料单价怎么求
  • pavfires.exe - pavfires是什么进程 有什么用
  • 股东可以随时退出吗
  • 房屋装修补偿款 避税
  • 我辞职了公积金怎么交
  • 多源传感器融合
  • php零基础教程
  • 缅甸安达曼海
  • 汇算清缴资产总额怎么算
  • php实现数据库创建题库
  • 小程序uniapp怎么用
  • auto.js 逆向
  • 发票密码什么意思
  • 《网络安全从入门到精通》
  • 最新版本TVBox配置地址
  • 财务章有几种样式
  • 收据能抵成本吗
  • 什么情况下需要异地预缴增值税
  • python socket连接后发送数据被强行终止
  • 国家税务总局关于营改增后土地增值税
  • 周转材料低值易耗品怎么结转
  • 残疾人保障金所属期怎么填
  • 融资租赁公司的风险资产包括哪些
  • 享受专项附加扣除要什么时候申报
  • sqlserver 判断函数
  • 管理人员工资结构
  • 收到残障金退回怎么处理
  • 收到政府补贴现金流
  • 货物出去没有出口报关可以补吗
  • 企业出售废旧材料的收入
  • 培训费产生的差额是什么
  • 免税收入包括哪些项目
  • 在途物资材料采购原材料的区别
  • 教育费附加如何做分录
  • 财务报表怎么做
  • 同一个sql语句 连接两个数据库服务器
  • win10启动项怎么设置
  • ubuntu zed
  • windows u盘制作
  • 在mac下如何安装软件
  • 硬盘xp系统
  • javascript基础笔记
  • android:ellipsize="marquee"
  • socketio nodejs
  • linux监控程序
  • 我置顶你也只顶你
  • css实现遮罩层
  • js从数组中选出最大的三个数
  • js禁用页面所以输入框
  • 广州市税务局官网电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号