`
即可偶
  • 浏览: 21238 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

nginx location 匹配顺序

阅读更多

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匹配顺序)

    主要介绍了详解Nginx之Location配置(Location匹配顺序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    简介Nginx中的location匹配规则

    location匹配命令 ~ #波浪线表示执行一个正则匹配,区分大小写 ~* #表示执行一个正则匹配,不区分大小写 ^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = #进行普通...

    nginx location中多个if里面proxy_pass的方法

    1、首先我们回顾一下nginx中location的相关知识 1)location的匹配指令: ~ #波浪线表示执行一个正则匹配,区分大小写 ...2)location 匹配的优先级(与location在配置文件中的顺序无关) 1.= 精确匹配会第一

    Nginx服务器中的location配置详解

    语法 location [=|~|~*|^~] /uri/ {…} 规则 = : 表示精确的URI匹配(有兴趣的同学可以看一下url...location匹配顺序 多个location配置的前提下,location的匹配顺序(未验证,嘿嘿,google上搜的) 1.首先匹\u914d=

    Nginx中Location从零开始的配置教程

    location的匹配顺序是“先匹配正则,在匹配普通”。 location的匹配顺序其实是“先匹配普通,在匹配正则”。造成误解的原因是:正则匹配会覆盖普通匹配 Nginx location 配置语法  1. location [ = | ~ | ~* | ^~ ] ...

    nginx location 配置 正则表达式实例详解

    •location 在 server 块中可以有多个,且是有顺序的,会被第一个匹配的 location 处理 •localtion 匹配功能只做匹配分发用,并不会改变uri的内容或其他作用,我一开始理解的时候就混淆了一些概念,建议多做测试看...

    nginx location优先级的深入讲解

    在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。 以下是按优先级排列说明: 第一优先级:等号类型(=)的优先级最

    Nginx正则表达式相关的参数和规则介绍

    前言 最近帮客户配置服务器,经常修改Nginx的配置文件,频繁的用到正式匹配规则,这里整理了一些常用的正则参数及规则,以备查询。 Nginx配置中Location的...多个location配置的情况下匹配顺序为: 首先匹配 = 其次匹

    Nginx一个域名访问多个项目的方法实例

    背景介绍 最近在个人的多个项目部署中遇到这样一个问题,一个域名如何实现多个项目的访问。...2.普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)。 3.正则表达式指

    实战Nginx高性能Web服务器

    1、高性能Web服务器Nginx的配置与部署...16、高性能Web服务器Nginx的配置与部署研究(16)小议location匹配模式优先级 内容:介绍 location 区段的模式匹配的几种基本方式(匹配符),以及优先级顺序,并提供实例分析。

    Nginx处理请求时的匹配规则详析

    nginx 在收到一条请求时将先... 定义 server_name 时可以使用 完全名称、通配符名称、正则表达式名称, 它们的匹配顺序如下: 完全匹配 前通配符匹配, 即 *.example.org 后通配符匹配, 即 mail.* 正则表达式匹配 如果

    nginx常见问题整理和解决办法

    以下就是我们整理的nginx常见的问题,解决办法我们例举了1-2种,大家可以都测试下。 常见问题 问题一:相同server_name多个虚拟主机优先级访问 ...问题二:location匹配优先级 location = /code1/

    一台nginx服务器多域名配置的方法

    Nginx中的server_name指令主要用于配置基于名称虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1、准确的server_name匹配,例如: server { listen 80; server_name ssdr.info www.ssdr.info; ... } 2...

Global site tag (gtag.js) - Google Analytics