【nginx】nginx之location规则详解:

6 篇文章 1 订阅
订阅专栏
文章详细介绍了Nginx中location的匹配规则,包括等号精确匹配、^~前缀匹配、~和~*正则匹配以及/的通用匹配,同时解释了各匹配类型的优先级。此外,文中还讨论了root与alias的区别,并通过实例展示了proxy_pass在不同场景下的路径处理方式。
摘要由CSDN通过智能技术生成


一、语法规则:
= 开头表示精确匹配

^~ 开头表示uri以某个常规字符串开头,理解为匹配url路径即可(非正则)

~ 开头表示区分大小写的正则匹配

~* 开头表示不区分大小写的正则匹配

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则

/ 通用匹配,任何请求都会匹配到
二、优先级:
等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他location的匹配项

^~和通用匹配。使用前缀匹配,不支持正则表达式,如果有多个location匹配成功的话,不会终止匹配过程,会匹配表达式最长的那个(下方有例子)

如果上一步得到的最长的location为^~类型,则表示阻断正则表达式,不再匹配正则表达式

如果上一步得到的最长的location不是^~类型,继续匹配正则表达式,只要有一个正则成功,则使用这个正则的location,立即返回结果,并结束解析过程

在这里插入图片描述

三、验证:
1、精确匹配:

在conf.d文件夹下创建配置文件test.com.conf,内容如下:
在这里插入图片描述
上图中第一个和第二个location匹配条件一样,都是/test.html,但第二个为精准匹配到静态路径,因此第一个不会执行,会执行第二个,www.test.com为本地域名解析,access_log和error_lor可以单独为每个模块定义日志
通过域名和路径访问后的内容如下:
在这里插入图片描述
注意:路径/usr/share/nginx/test_html文件夹下需要有test.html才可以正常访问

上图中指定静态资源路径用的关键字root,还可以用alias,那么root和alias的区别是什么?
(1)用root属性指定的值是要加入到最终路径中的,匹配条件会拼接到路径中
(2)用alias属性指定的值不需要加入到最终路径中

如上图中所示,请求的条件为test.html,通过root指定的路径为/usr/share/nginx/test_html,因此在匹配的时候,这个路径下就必须要有test.html这个文件才可以,否则就会找不到而报错,如果用alias,那么通过浏览器进行请求的时候,alias也是指定到/usr/share/nginx/test_htm路径下,但是会匹配默认的index.html,而无须强制匹配test.html,但是此时就不能使用”=”来进行精确匹配,现在将root改为alias,如图:
在这里插入图片描述
注意:alias指定的路径结尾要加”/”

下面的配置文件采用roo指定路径,当通过域名请求http://www.test.com/html/的时候,将跳转到/usr/share/nginx/html/下的index.html页面,如图:
在这里插入图片描述

下面的配置文件采用alias指定路径,请求http://www.test.com/linshi/的时候,将跳转到/usr/share/nginx/test_html/index.html页面,如图:
在这里插入图片描述

2、通过^~方式实现匹配:

例如:下面配置文件有两条规则,分别匹配url以字母a开头,但是长度不同,首先将长的规则先注释掉,如图:
在这里插入图片描述

通过curl请求查看状态码,如图:
在这里插入图片描述

说明:当前只有一个规则开启,因此当匹配url以/a/开头的任何url时,都会返回状态码666

现在将第二条规则注释取消,打开规则,如图:
在这里插入图片描述
再次发起同样的请求,观察返回状态码,如图:
在这里插入图片描述

从上图可以看出,两条规则同时被匹配成功,但是第二条规则比较长,因此第二条规则优先被匹配,如果^~匹配成功了,那么表示阻断正则表达式,不再进行正则匹配

3、通过”~”方式实现匹配:

上图中的匹配规则都是通过”^~”方式来实现的,那么在匹配最长规则的时候又分为两种情况:
第一种:最长规则通过~来实现匹配(上图中的最长规则就是通过~实现)
第二种:最长的规则不是通过^~实现匹配,而是通过普通匹配来实现

当最长规则是通过普通匹配的时候,将会继续正则匹配, 只要有一个正则成功,则使用这个正则的location,停止继续匹配,返回结果
现在将第二条规则改为普通匹配,并添加一条正则匹配,如图:
在这里插入图片描述
再次执行同样的请求命令,得到的状态码如下:
在这里插入图片描述

说明:从上图可以看出请求/a/b/的时候,首先会到达第二条规则(最长规则),由于第二条规则为普通匹配(不是^~匹配),因此会继续去匹配正则,也就是第三条规则,因此最终返回状态码为888

4、通过"~*"方式实现匹配:

” ~* ” 表示不区分大小写的正则匹配
例如:通过url请求/a/b/或者/A/B/,查看返回状态码,如图:
在这里插入图片描述
请求结果如下:
在这里插入图片描述
从上图可以看出,无论匹配的是大写还是小写,都会返回对应状态码888
常用方法还有匹配图片后缀,并返回指定信息,如图:
在这里插入图片描述
在这里插入图片描述

5、”!~*” 和”!~” 不常用,再次不做介绍
6、通过”/” 实现通用匹配:

本例子中,9091服务为httpd
第一种情况:proxy_pass最后面没有斜杠,匹配路径有斜杠(/bbb/),如图:
在这里插入图片描述
说明:proxy_pass最后面没有斜杠”/”,此时通过浏览器请求http://10.9.2.248/bbb/,那么实际访问的地址就是 http://10.9.2.248:9091/bbb/,会将匹配路径/bbb一起加过去
此时如果在http的目录页面目录htdocs中创建目录bbb,在bbb目录下创建文件index.html,然后即可实现正常访问,如图:
在这里插入图片描述

第二种情况: proxy_pass最后面有斜杠 “/”,匹配路径也有斜杠(/bbb/),如图:
在这里插入图片描述
说明:proxy_pass最后面有斜杠”/”,此时通过浏览器请求http://10.9.2.248/bbb/,那么实际访问的地址就是 http://10.9.2.248:9091,会将/bbb抛弃的,如图:
在这里插入图片描述

第三种情况:proxy_pass后面还有其他路径但是最后没有 “/”, 匹配路径也有斜杠(/bbb/) ,如图:
在这里插入图片描述
说明,此时通过浏览器访问http://10.9.2.248/bbb/index.html,实际请求的是http://10.9.2.248/cxxindex.html(注意位置是默认路径下,不是ccc路径下,如果proxy_pass的路径为/ccc/ddd,那么实际请求的就是ccc路径下的cccindex.html)
在httpd的默认路径下(htdocs)创建文件cxxindex.html,然后访问,如图:
在这里插入图片描述

第四种情况: proxy_pass后面还有其他路径但是最后有 “/”, 匹配路径也有斜杠(/bbb/) ,如图:
在这里插入图片描述
说明:此时通过浏览器访问:http://10.9.2.248/bbb/index.html,实际访问的是http://10.9.2.248/ccc/index.html
在httpd默认路径下(htdocs)创建一个名称为ccc的文件夹,在内部定义一个index.html,然后访问,如图:
在这里插入图片描述

第五种情况:location匹配路径末尾没有 “/”,proxy_pass后面也没有”/”,如图:
在这里插入图片描述
说明:8081端口为httpd的服务器端口,如果匹配路径和proxy_pass后都没有”/”,那么此时访问http://10.9.2.248/bbb,默认将请求到http://127.0.0.1:8081/bbb/index.html的内容,此时在httpd默认路径htdocs下创建文件夹bbb,内部创建index.html,定义内容为:i am match bbb,通过IP请求如图:
在这里插入图片描述

Nginxlocation规则匹配
weixin_45203131的博客
03-03 308
location配置 Location语法示例 location [=|^||*|!|!~|/] /uri/ { … } 匹配符 匹配规则 优先级 = 精确匹配 1 ^~ 以某个字符串开头 2 ~ 区分大小写的正则匹配 3 ~ 不区分大小写的正则匹配 4 !~ 区分大小写不匹配的正则 5 !~ 不区分大小写不匹配的正则 ...
nginx location的正则匹配规则
wangxiaofei2006的专栏
08-08 2234
nginx location的正则匹配规则 location匹配命令   ~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,如果该选项匹配,则不再匹配别的选项,一般用来匹配目录,普通匹配 =      #进行普通字符精确匹配,精确匹配后不会再继续任何别的匹配了,普通匹配 @     #
详解Nginx location 匹配规则
09-30
本篇文章主要介绍了Nginx location 匹配规则,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Nginx详解Location匹配规则
波波烤鸭的博客
05-20 6898
  本文我们来给大家详细介绍下Nginx中的核心配置文件中的Location匹配规则。   location会尝试根据用户请求中的URI来匹配上面的/uri表达式,如果可以匹配,就选择location{}块中的配置来处理用户请求。当然,匹配方式是多样的, 下面介绍location的匹配规则。 语法: location [=|~|~*] /uri/ { … } ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 = #进行普通字符精确匹
NginxLocation详解(语法、查找顺序与优先级、root与alias区别)
最新发布
小李学不完的博客
08-19 1362
location 是在 server 块中配置,根据不同的 URl使用不同的配置,来处理不同的请求 location 是有顺序的,会被第一个匹配的location 处理
nginxlocation 模块
刘某的博客
03-07 1075
Nginxlocation 指令用于定义如何处理某个特定的请求 URI,它可以匹配 URL 的路径部分,然后根据匹配结果对请求进行不同的处理。这些处理可能包括重写 URI、代理请求、返回静态内容等。location 指令可以在 server 或 location 块内使用。
Nginxlocation规则详解
m0_71163619的博客
08-10 676
Location 指令是http模块中的配置指令之一,LocationNginx中的块级指令(block directive),通过配置Location指令块,可以决定客户端发过来的请求URI如何处理(是映射到本地文件还是转发出去)及被哪个location处理Nginxlocation就相当于url路由,Nginx根据location的配置来决定究竟如何处理一个请求。
Nginxlocation规则
Liang_GaRy的博客
06-25 2616
Nginxlocation规则 概念 可以通过配置location指令块,决定客户端发过来的请求URI是如何处理的; 语法: Syntax: location [ = | ~ | ~* | ^~ ] uri { ... } location @name { ... } Default: — Context: server, location Location 的配置可以有两种配置方法,可以在server指令块和location指令块中配置 修饰符+URI(资源路径) @+name:这种是内部跳转用到;
nginxLocation语法规则
热门推荐
落日流年
08-15 4万+
转载自:https://www.cnblogs.com/crazylqy/p/6892010.html 1Location语法规则 1.1 Location规则 语法规则location [=|~|~*|^~] /uri/ {… } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 符号 ...
Nginx Location指令URI匹配规则详解小结
01-11
**Nginx Location指令是HTTP模块中的核心配置项,用于根据预定义的URL匹配规则接收并处理用户请求。Location指令的语法如下:** ```markdown location [=|~|~*|^~|@] /uri/ { … } location @name { … } ``` 1. *...
Nginx服务器的location指令匹配规则详解
01-10
Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 nginx ...
nginx location语法规则
liushuyul的博客
05-27 1532
1、location指令语法 location [=||*|^~|@] /uri/ { … } 或 location @name { … } = 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 为区分大小写匹配(可用正则表达式) !~为区分大小写不匹配 ~* 为不区分大小写匹配(可用正则表达式) !~*为不区分大小写不匹配 ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。 2、URI匹配模式 location指令分为两种匹配模式: 1>
Nginx系列-Nginx Location匹配规则
囚徒之困
08-12 1472
nginx location匹配规则
Nginxlocation的配置规则
Ginny_2019的博客
06-24 269
一,配置语法 location [= | ~* | ^~ ] /uri/ {...} 二,配置规则 1> location = /uri 精准匹配 例如:location = / location = /index 2> location ^~ /uri 前缀匹配 例如:location ^~ /article/ ...
Nginx学习系列】location匹配规则
长歌如梦夜
06-17 6631
nginx location学习
Nginxlocation 详解
u014212540的博客
12-01 3431
Nginxlocation 详解
Nginx location配置规则
yishudeyu的专栏
08-03 1062
location配置分两种: (1)普通location配置 (2)正则表达式location配置 #普通location例子1 location / { } #普通location例子2 location /static/ { } #普通location例子3 location ^~ /video { } #普通location例子4 location = / { }
nginxlocation规则
Do it Yourself
03-26 287
location用法: location [=|~|~*|^~] uri { ……..} 其中“location =/documents/”表示精准匹配,只能匹配=后面的内容 “location ^~/documents/”表示匹配常规字符串,及时后面有正则匹配,也不进行正则匹配 “location ~*.(gif|jpg)”不区分大小写的正则匹配“location .(gif|...
nginx.config中location字段详解
06-10
Nginx 配置文件中 location 字段用于匹配请求 URL 并设置相应的处理规则,如反向代理、缓存等。location 字段的语法如下: ``` location [ = | ~ | ~* | ^~ ] uri { ... } ``` 其中: - `=` 表示精确匹配; - `~` 表示区分大小写的正则匹配; - `~*` 表示不区分大小写的正则匹配; - `^~` 表示普通字符匹配。 uri 表示要匹配的请求 URL,可以是一个字符串或正则表达式。 location 字段可以包含以下配置项: - proxy_pass:用于设置反向代理服务器的地址; - root:用于设置静态文件的根目录; - index:用于设置默认的访问页面; - try_files:用于设置文件查找规则,可以用于处理 URL 重写; - rewrite:用于设置 URL 重写规则; - expires:用于设置缓存时间; - add_header:用于设置响应头。 例如,下面的配置将匹配以 /api/ 开头的 URL,并将请求转发到 http://127.0.0.1:8000: ``` location /api/ { proxy_pass http://127.0.0.1:8000; } ``` 需要注意的是,location 字段的匹配顺序是按照配置文件中出现的顺序进行匹配的,因此在配置时需要注意顺序。
写文章

热门文章

  • Css实现省略号...及悬浮层显示全部内容的方法: 34985
  • Css中实现文字强制不换行、超出自动换行: 30215
  • 【git】Git 回退到指定版本: 25561
  • 【JavaScript】JavaScript日期和时间的格式化: 24442
  • Vue中:rules的写法: 22843

分类专栏

  • 前后端分离 4篇
  • Vue框架 140篇
  • 小程序端 57篇
  • React框架 5篇
  • vue3 5篇
  • Electron 2篇
  • Angular
  • JavaScript 66篇
  • Html/Css 19篇
  • 图表与地图 23篇
  • Git 10篇
  • TypeScript 5篇
  • Pinia 3篇
  • MQTT 2篇
  • nginx 6篇
  • 软件与插件 36篇
  • 内网穿透 1篇
  • 接口调试工具 3篇
  • node.js 7篇
  • java 5篇
  • springboot 25篇
  • 数据库 3篇
  • Redis 3篇
  • Linux 8篇
  • Docker 4篇

最新评论

  • 【vue】ffmpeg实现web在线转码播放:

    qq_31321231: 有没有案例包呢

  • 【vue】ffmpeg实现web在线转码播放:

    小杨同学呀呀呀呀: import { createFFmpeg, fetchFile } from "@ffmpeg/ffmpeg"; 找不到 createFFmpeg, fetchFile这俩方法,怎么回事

  • 【AntD】Antd Table组件的头部单元格水平居中,单元格居左:

    qq_34978644: 补充 customCell: () => ({ style: { textAlign: 'right' } }), 列单元格水平居右边

  • 【Docker Desktop】Docker Desktop的安装与使用:

    ω懒东ω: 作者讲的真细,果断收藏

  • 【Docker Desktop】Docker Desktop的安装与使用:

    ω懒东ω: 别的都成了,没想到命令在本地输出,启动了,不知道命令位置

大家在看

  • 如何恢复已删除/未保存的 Powerpoint 文件 885
  • Linux文件IO(九)-原子操作与竞争冒险
  • 测试环境路由可以这么做(七):研发提效的好帮手 786
  • 意外删除文件或丢失数据?10大免费数据恢复工具 852
  • 如何创建以太坊钱包以及部署私有链 785

最新文章

  • 【uniapp】uniapp设置改变全局字体大小功能:
  • 【uniapp】uniapp开发的微信公众号,微信设置字体大小或者关怀模式,页面布局字体大小不受影响的解决方法:
  • 【node】Node.js的常用内置模块:
2024年19篇
2023年193篇
2022年200篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun Peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家怎么鉴别玻璃钢花盆玻璃钢雕塑蒸馒头岳阳玻璃钢雕塑厂玻璃钢桃子雕塑批发深圳玻璃钢雪梨雕塑葫芦岛玻璃钢雕塑订制价格商场盲盒展示美陈济南玻璃钢天壶雕塑泸州成都商场美陈渠道清远创意玻璃钢雕塑烟台南沙玻璃钢人物雕塑河北玻璃钢卡通雕塑价格山东特色商场美陈供应铁岭市玻璃钢雕塑珠海定制玻璃钢动物雕塑芜湖玻璃钢雕塑人物设计玻璃钢铜制雕塑玻璃钢雕塑供应生产阜康玻璃钢伟人像雕塑价格低的玻璃钢佛像雕塑盘龙区玻璃钢雕塑设计与制作运城佛像玻璃钢仿铜雕塑厂家禄劝玻璃钢仿真雕塑烟台玻璃钢雕塑生产厂家沈阳卡通玻璃钢雕塑定制玻璃钢雕塑壁纸动态衢州创意玻璃钢雕塑哪家便宜玻璃钢泡沫雕塑设计淮北抽象玻璃钢雕塑水景玻璃钢雕塑厂香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化