nginx配置文件之location匹配详解

栏目: 服务器 · Nginx · 发布时间: 6年前

内容简介:作为一名PHPer,配置nginx是我们必会的技能项之一。但是当用户请求到达nginx之后,是如何匹配到对应的配置项的呢?首先我们先了解下location的语法规则,location语法规则大致可以分为两类一类是指定URL地址:

作为一名PHPer,配置nginx是我们必会的技能项之一。但是当用户请求到达nginx之后,是如何匹配到对应的配置项的呢?

location语法规则

首先我们先了解下location的语法规则,location语法规则大致可以分为两类

一类是指定URL地址:

location [ = | ~ | ~* | ^~ ] uri {
    ... 
}

另一类则是指定自定义名称:

location @name { 
    ... 
}

@name 是对location设置的一个自定义名称,由 @ + 自定义命名 组成,一般用于try_files后面的内部请求,且自定义命名location中不可再嵌套自定义命名location

举例:

location @xuzheng{
    ...
}

location修饰符含义

上文我们提到location语法规则有一类是指定URL地址,其中运用了一些修饰符,下面我们看下这些修饰符的含义

1、 = 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。

举例:

location = / {
    ...
}

2、 ~ 表示该规则是使用正则定义的,区分大小写。

举例:

location ~ \.php$ {
    ...
}

3、 ~* 表示该规则是使用正则定义的,不区分大小写。

举例:

location ~* \.php$ {
    ...
}

4、 ^~ 是前缀匹配的一种,但是如果该符号后面的字符被匹配上,则被默认为最佳匹配,即采用该规则,不再进行后续的查找。

举例:

location ^~ /blogs {
    ...
}

location匹配优先级

最后,我们了解下location的查找规则。下面列出的location查找,从上到下的优先级为从高到低

1、等号类型,精确匹配

2、 ^~ 类型,前缀匹配,不支持正则,如果该符号后面的字符匹配被匹配上,则被默认为最佳匹配,不再继续往下查找

3、 ~~* 类型,正则匹配, ~ 区分大小写, ~* 不区分大小写

4、前缀匹配类型,如location / {}(表示任何以/开头的URL都匹配)或location /user {},只不过找到合适了还会继续往下找,直到找到最长匹配

注:使用正则匹配的规则时,顺序很重要,location只要找到第一个符合条件的配置规则就会停止查找,即使下面有更匹配的配置

总结

location匹配过程:

1、首先先检查使用前缀匹配(即字符串匹配)定义的location,选择最长匹配的项并记录下来

2、如果找到了精确匹配的location,也就是使用了 = 修饰符的location,结束查找,使用它的配置。如果没有找到合适精确匹配,则继续往下查找

3、如果找到了包含 ^~ 的前缀匹配,则停止查找,使用它定义的配置。如果没有找到合适的带 ^~ 符号的前缀匹配,则继续往下查找

4、如果找到了使用正则定义的location,则停止查找,使用它定义的配置。如果没有找到合适的正则匹配,则继续往下查找

5、使用前面记录的最长匹配前缀字符location。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Qt 5.9 C++开发指南

Qt 5.9 C++开发指南

王维波、栗宝鹃、侯春望 / 人民邮电出版社 / 2018-5-1 / 89.00元

本书以Qt 5.9 LTS版本为开发平台,详细介绍了Qt C++开发应用程序的技术,包括Qt应用程序的基本架构、信号与槽工作机制、图形显示的Graphics/View架构、数据编辑和显示的Model/View架构、对话框和多窗口的设计与调用方法等,介绍了常用界面组件、文件读写、绘图、图表、数据可视化、数据库、多线程、网络和多媒体等模块的使用。每个编程主题都精心设计了完整的实例程序。 通过阅读......一起来看看 《Qt 5.9 C++开发指南》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具