location
匹配的原型是这样的:location
[=|~|~*|^~|@] /uri/ { … }
“=”是精确匹配
“@”是命名的location
,在正常的location
匹配中不会使用,仅仅在内部跳转中才会使用到。
“~”是区分大小写的匹配
“~*”是不区分大小写的匹配
“^~”表示中止正则匹配(这个平时没太注意)
在一个请求中,匹配的顺序是这样的。先使用所有location
来匹配URI的开始部分,最精确匹配的(形象点说,就是即配置字符数最多的)为最后匹配结果;然后进行正则表达式的匹配,按照配置文件中的顺序来进行匹配,如果有一个匹配成功,则结束正则匹配,且最后匹配结果为此location
,否则,最后结果为先前最精确匹配的的那个location
。
之前有提到过”^~”,它配置在非正则匹配中,表示,如果最精确匹配的loction为此location
,则立即返回该location
作为结果,而不进行下一步的正则匹配,这样,就此可以不必要进入到正则匹配当中,以加快匹配速度。
还有”=”,它是最精确的匹配,而且优先级最高。最先进行带”=”的匹配,如果匹配成功,立马返回。
最后总结下匹配的过程,有四步:
1. 带”=”前缀的先进行匹配,如果找到了,中止查找。
2. 所有其它location
进行非正则的匹配,找到最精确匹配的那个,如果匹配到带”^~”前缀的,则中止查找。
3. 正则查找,按照我们配置文件中配置的location
顺序进行查找。
4. 如果正则查找匹配成功,则使用此正则匹配的location
,否则,使用第二步查找的结果。
这里要特别说明下”=”与”^~”的区别:
“=”在匹配时,则匹配带”=”的location
。而”^~”,则会匹配所有非”=”的非正则location
,只有在确认它是最精确匹配的location
后,才生效。
分享到:
相关推荐
主要介绍了详解Nginx之Location配置(Location匹配顺序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 ^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = #进行普通...
1、首先我们回顾一下nginx中location的相关知识 1)location的匹配指令: ~ #波浪线表示执行一个正则匹配,区分大小写 ...2)location 匹配的优先级(与location在配置文件中的顺序无关) 1.= 精确匹配会第一
语法 location [=|~|~*|^~] /uri/ {…} 规则 = : 表示精确的URI匹配(有兴趣的同学可以看一下url...location匹配顺序 多个location配置的前提下,location的匹配顺序(未验证,嘿嘿,google上搜的) 1.首先匹\u914d=
location的匹配顺序是“先匹配正则,在匹配普通”。 location的匹配顺序其实是“先匹配普通,在匹配正则”。造成误解的原因是:正则匹配会覆盖普通匹配 Nginx location 配置语法 1. location [ = | ~ | ~* | ^~ ] ...
•location 在 server 块中可以有多个,且是有顺序的,会被第一个匹配的 location 处理 •localtion 匹配功能只做匹配分发用,并不会改变uri的内容或其他作用,我一开始理解的时候就混淆了一些概念,建议多做测试看...
在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。 以下是按优先级排列说明: 第一优先级:等号类型(=)的优先级最
前言 最近帮客户配置服务器,经常修改Nginx的配置文件,频繁的用到正式匹配规则,这里整理了一些常用的正则参数及规则,以备查询。 Nginx配置中Location的...多个location配置的情况下匹配顺序为: 首先匹配 = 其次匹
背景介绍 最近在个人的多个项目部署中遇到这样一个问题,一个域名如何实现多个项目的访问。...2.普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)。 3.正则表达式指
1、高性能Web服务器Nginx的配置与部署...16、高性能Web服务器Nginx的配置与部署研究(16)小议location匹配模式优先级 内容:介绍 location 区段的模式匹配的几种基本方式(匹配符),以及优先级顺序,并提供实例分析。
nginx 在收到一条请求时将先... 定义 server_name 时可以使用 完全名称、通配符名称、正则表达式名称, 它们的匹配顺序如下: 完全匹配 前通配符匹配, 即 *.example.org 后通配符匹配, 即 mail.* 正则表达式匹配 如果
以下就是我们整理的nginx常见的问题,解决办法我们例举了1-2种,大家可以都测试下。 常见问题 问题一:相同server_name多个虚拟主机优先级访问 ...问题二:location匹配优先级 location = /code1/
Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1、准确的server_name匹配,例如: server { listen 80; server_name ssdr.info www.ssdr.info; ... } 2...