前言

简单介绍一下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. Java 开发人员调度软件项目 (java基础编程总结项目)+javaBean+测试代码+数组知识+数据结构+继承+多态+封装+自定义异常,异常处理+构造器知识+重载+重写+接口+实现接口+关键字使用(static +equalsIgnoreCase+fianl+instanceof判断类型)+向下转型与向上转型

    /** * * @Description Java 开发人员调度软件项目 (java基础编程总结项目) * +javaBean+测试代码+数组知识+数据结构+继承+多态+封装+自定义异常,异常处理 * ...

  2. XWAF安装遇到的坑

    存在的问题:需要的编译环境没有安装配置好的话出现下面的问题: 1.error: Microsoft Visual C++ 14.0 or greater is required. Get it wit ...

  3. 基于 XAF Blazor 的规则引擎编辑器

    开源项目地址:https://gitee.com/lowcodexaf/rules-engine-editor 前言 本项目是基于XAFBlazor的规则引擎编辑器,规则引擎采用的是微软开源的Rule ...

  4. FastGithub.UI64位中文版V2.1.4绿色版 - 软件推荐

    推荐理由 相对于改hosts,这个更好用 FastGithub.UI64位中文版V2.1.4绿色版 https://www.cr173.com/soft/670733.html

  5. python 音频通道分离的源码实现

    一 前记 作为一个音频工程师,仅仅依靠鼠标点击,没有一些自己的小工具的话,肯定是不合格的了. 最近用到了一个音频通道分离的功能,这里就用python敲击了一下,这里做个备忘吧,给有需求的小伙伴抛砖引玉 ...

  6. day10-中文乱码处理

    中文乱码处理 1.问题抛出 当表单提交的数据为中文时,会出现乱码: (1)Monster.java: package com.li.web.datavalid.entity; import org.h ...

  7. [置顶] drools规则引擎因为内存泄露导致的内存溢出

    进入这个问题之前,先了解一下drools: 在很多行业应用中比如银行.保险领域,业务规则往往非常复杂,并且规则处于不断更新变化中,而现有很多系统做法基本上都是将业务规则绑定在程序代码中. 主要存在的问 ...

  8. [leetcode 496. 下一个更大元素 I] 单调栈

    单调栈的写法: import java.util.ArrayDeque; import java.util.Deque; import java.util.HashMap; import java.u ...

  9. C#断字符串是否为数字,用正则表达式

  10. Spring Boot框架中使用Jackson的处理总结

    1.前言 通常我们在使用Spring Boot框架时,如果没有特别指定接口的序列化类型,则会使用Spring Boot框架默认集成的Jackson框架进行处理,通过Jackson框架将服务端响应的数据 ...