前言

简单介绍一下find_config 与 preaccess 阶段。

正文

find_config 很大一部分工作是进行location的匹配。

来一张图看下location指令和merge_slashes:

前缀字符串:

  1. 常规 比如/http,表示前缀是http,比如 http/aaa 这种。

  2. =:精确匹配,表示一定要和这个链接一模一样。

  3. ^~: 匹配上后则不再进行正则表达式匹配

正则表达式:

~: 大小写敏感的正则匹配

~*: 忽略大小写的正则匹配

合并连续的符号:

merge_slashes

用于内部跳转的命名location:

@ 这种。

下面给一些例子哈:

location的匹配规则:

然后来实验一下例子哈:

location ~ /Test1/$ {
return 200 'first regular expressions match!\n';
} location ~* /Test1/(\w+)$ {
return 200 'longest regular expressions match!\n';
} location ^~ /Test1/ {
return 200 'stop regular expressions match!\n';
} location /Test1/Test2 {
return 200 'longest prefix string match!\n';
} location /Test1 {
return 200 'prefix string match!\n';
} location = /Test1 {
return 200 'exact match!\n';
}

实验一:

这里Test1 那么走的是精确匹配。

实验二:

这个是完全匹配,所以选择了3,这里有人就问了,这里~ /Test1/$ 不也是完全匹配吗?因为加了^~ 所以正则表达被拒了。

实验三:

可以看到其实这里面3个都匹配上了,但是因为匹配到了^~ /Test1/,字符最长,且加了^~所以选这个。

实验四:

因为/Test1/Test2完全匹配了,本来应该选择这个的,但是有正则匹配了,所以选正则。

优先级规则:

  1. 精确匹配

  2. 匹配字符串最长的,如果匹配字符串最长的没有加~^,那么就会查看正则表达。

  3. 然后是有多个正则表达,那么选正则表达第一个。

下一节介绍preaccess.

nginx重新整理——————http请求的11个阶段中的find_config[十三]的更多相关文章

  1. 万字长文!一次性弄懂 Nginx 处理 HTTP 请求的 11 个阶段

    Nginx 处理一个 HTTP 请求的全过程 前面给大家讲了 Nginx 是如何处理 HTTP请求头部的,接下来就到了真正处理 HTTP 请求的阶段了.先看下面这张图,这张图是 Nginx 处理 HT ...

  2. nginx系列7:处理HTTP请求的11个阶段

    处理HTTP请求的11个阶段 如下图: 序号 阶段 指令 备注 1 POST_READ realip 获取客户端真实IP 2 SERVER_REWRITE rewrite 3 FIND_CONFIG ...

  3. Nginx处理请求的11个阶段(agentzh的Nginx 教程学习记录)

    Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是 post-read.server-rewrite.find-config.rewrite.post-rewrite.preacc ...

  4. nginx处理请求的11个阶段

    Nginx 处理请求的过程一共划分为 11 个阶段,按照执行顺序依次是 post-read.server-rewrite.find-config.rewrite.post-rewrite.preacc ...

  5. Nginx 请求的11个阶段

    48 1:当请求进入Nginx后先READ REQUEST HEADERS 读取头部 然后再分配由哪个指令操作 2:Identity 寻找匹配哪个Location  3:Apply Rate Limi ...

  6. 【Nginx】HTTP请求的11个处理阶段

    Nginx将一个HTTP请求分成多个阶段.以模块为单位进行处理.这样做的优点是使处理过程更加灵活.减少耦合度.HTTP框架将处理分成了11个阶段,各个阶段能够包括随意多个HTTP模块并以流水线的方式处 ...

  7. nginx源代码分析--读请求主体(1)

    首先,读取请求体已进入HTTP要求11相,我们需要做的请求正文部分处理一些模块,所以这个模块需要注册功能在这个阶段,在阅读功能要求的身体ngx_http_read_client_request_bod ...

  8. nginx&http 第三章 ngx 请求处理的 11 个阶段 --ngx_http_process_request& ngx_http_handler

    ngx_http_process_request如果设置了定时器则删除,既然所有的请求已经接收完毕,就不会再发生超时了 重设连接的读写回调函数 重设请求读事件回调函数 调用 ngx_http_hand ...

  9. nginx&http 第三章 ngx HTTP 请求的 11 个处理阶段

    nginx 将一个 HTTP 请求分为 11 个处理阶段,这样做让每一个 HTTP 模块可以仅仅专注于完成一个独立.简单的功能,而一个请求的完整处理过程可以由多个 HTTP 模块共同合作完成将一次 H ...

  10. 用lua扩展你的Nginx(整理)-----openresty

    用lua扩展你的Nginx(整理) 首先得声明.这不是我的原创,是在网上搜索到的一篇文章,原著是谁也搞不清楚了.按风格应该是属于章亦春的文章. 整理花了不少时间,所以就暂写成原创吧. 一. 概述 Ng ...

随机推荐

  1. C++ //类模板成员函数类外实现

    1 #include <iostream> 2 #include <string> 3 #include<fstream> 4 using namespace st ...

  2. 解决element-ui的date-picker组件的picker-options属性不生效的问题

    网上查半天都没查到,好像没人写,于是俺怀着激动的心情来记录下 项目来需求,说要控制日期选择的最大最小范围,看似简单,实则藏深坑! 小白的我天真地按照网上的例子(主要是官网也不给一个!)写完如下: 1. ...

  3. springboot中使用restTemplate发送带参数和请求头的post,get请求

    最近在工作中使用到了用restTemplate去获取网站数据填入到数据库中,在这里记录下来以便以后使用: 添加相关依赖:版本使用springboot中的 <dependency> < ...

  4. 音标 重音 u 用 中文 吁 去记忆 骑马让马停下来的 吁 - 英语

    音标 重音 u 用 中文 吁 去记忆 骑马让马停下来的 吁

  5. Go | Gin 解决跨域问题跨域配置

    Go | Gin 解决跨域问题跨域配置 目录 一.关于跨域解决方案 二.使用步骤 1. 编写一个中间件 2. 使用 3. 注意事项 一.关于跨域解决方案 关于跨域的解决方法,大部分可以分为 2 种 n ...

  6. Miracast技术详解(四):Sink源码解析

    目录 简介 Sink端源码 RTSP通讯 RTP通讯 播放阶段 MPEG2-TS解析 总结 简介 在<Android Studio导入Android 4.2.2的WiFi-Display系统源码 ...

  7. 2024-03-16:用go语言,给你一个正整数数组 nums, 每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半。 (注意,在后续操作中你可以对减半过的数继续执行操作)

    2024-03-16:用go语言,给你一个正整数数组 nums, 每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半. (注意,在后续操作中你可以对减半过的数继续执行操作) ...

  8. 摄影系列:李涛ps视频教程笔记

    四种颜色模式: HSB:人眼的识别. RGB:基于光.(RGB自然三原色,三个最大值,得出白色,所以RGB为加色模式) CMY:基于印刷.(青.品.黄印刷三原色,三个最大值,得出黑色,所以CMY为减色 ...

  9. 假期做了一项调研:大厂为啥都自研RPC?结果合乎情理!

    大家好,我是冰河~~ 五一假期过的可真快,今天开始,又要搬砖了.在五一假期当中,冰河做了一项调研,感觉结果还是挺合乎情理的. 翻看招聘信息 先来看我在某招聘网站上随便搜索了下Java招聘的岗位,看到的 ...

  10. KingbaseES 中的xmin,xmax等系统字段说明

    在KingbaseES中,当我们创建一个数据表时,数据库会隐式增加几个系统字段.这些字段由系统进行维护,用户一般不会感知它们的存在. 例如,以下语句创建了一个简单的表: create table te ...