`
zachary.guo
  • 浏览: 487167 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Nginx 的 location 指令的匹配规则

阅读更多
        Nginx 的 location 指令,允许对不同的 URI 进行不同的配置,既可以是字符串,也可以是正则表达式。使用正则表达式,须使用以下前缀:
        (1) ~*, 表示不区分大小写的匹配。
        (2) ~, 表示区分大小写的匹配。

        对于非正则的匹配,即字符串匹配,有如下前缀:
        (1) ^~, 表示匹配到字符串后,终止正则匹配。
        (2) =, 表示精确匹配。
        (3) @, 当然,这个也算不上字符串匹配。如果可以,你也可以将其理解成是正则匹配。它是一个命名标记,这种 location 不会用于正常的请求,它们通常只用于处理内部的重定向。

        在匹配过程中,Nginx 将首先匹配字符串,然后匹配正则表达式。匹配到第一个正则表达式后,会停止搜索。如果匹配到正则表达式,则使用正则表达式的搜索结果,如果没有匹配到正则表达式,则使用字符串的搜索结果。

        上面这段话的意思是说,有一个字符串和正则表达式均能匹配上,那么会使用正则表达式的搜索结果。这里,我们可以使用前缀 "^~" 来禁止匹配到字符串后,继续检查正则表达式。匹配到 URI 后,将停止搜索。

        使用前缀 "=" 可以进行精确的 URI 匹配,如果找到匹配的 URI,则停止搜索。"location = /" 只能匹配到 "/",而 "/test.html" 则不能被匹配。

        正则表达式的匹配,按照它们在配置文件中的顺序进行,写在前面的优先。

        另外,前缀 "@" 是一个命名标记,这种 location 不会用于正常的请求,它们通常只用于处理内部的重定向(例如:error_page, try_files)。

        最后总结一下匹配的过程:
        (1) 前缀 "=" 先进行匹配,如果找到了,终止搜索。
        (2) 对所有其它 location 进行非正则的匹配,找到最精确匹配(对于 /blog/admin/ 这个 URI, location /blog 要比 location / 长,因此 location /blog 要比 location / 要精确)的那个。如果找到的这个是带 "^~" 前缀的,则终止搜索并直接返回找到的这个,否则开始正则查找。会不会出现所有的非正则匹配都无法匹配到 URI 呢,当然,你若不定义一个 location /,这种情况的确会发生,没关系啊,它会进行正则查找的。
        (3) 正则查找,按照我们配置文件中配置的 location 顺序进行查找。
        (4) 如果正则查找匹配成功,则使用此正则匹配的 location,否则,使用第二步查找的结果。如果『否则』发生了,同时,第二步中的粗体字部分的假设的情况也发生了,怎么办?404 会等着你的。
分享到:
评论

相关推荐

    nginx location匹配实例详解

    您可能感兴趣的文章:Nginx配置指令location匹配符优先级和安全问题详解Nginx location 匹配规则Nginx服务器的location指令匹配规则详解利用nginx如何匹配多个条件Nginx location匹配规则的方法示例简介Nginx中的...

    Nginx关于location的匹配规则详解.docx

    **Nginx中的Location匹配规则详解** 在Nginx服务器配置中,`location`指令是核心部分之一,用于处理HTTP请求。它根据指定的规则来匹配URL,从而决定如何处理客户端的请求。本文将深入探讨Nginx `location`的匹配...

    Nginx Location 指令简明指南

    首先,Location指令的基本语法非常直观,它使用不同的前缀来表达不同的匹配规则。指令格式为: ```nginx location [修饰符] /uri/ { # 配置代码块 } ``` 其中修饰符有以下几种: - `=`:精确匹配。当请求的URI...

    Nginx服务器的location指令匹配规则详解

    Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或正则表达式。但如果要使用正则表达式,则必须指定前缀。 nginx ...

    Nginx Location指令URI匹配规则详解小结

    **Nginx Location指令是HTTP模块中的核心配置项,用于根据预定义的URL匹配规则接收并处理用户请求。Location指令的语法如下:** ```markdown location [=|~|~*|^~|@] /uri/ { … } location @name { … } ``` 1. *...

    nginx的server和location匹配规则

    Nginx 服务器和 Location 匹配规则 Nginx 配置文件主要由 events、http、server、location、upstream 等块配置项和一些行配置项组成。Server 块匹配规则是 Nginx 配置文件中的一部分,对虚拟主机的相关参数进行配置...

    详解Nginx location 匹配规则

    接下来,我们将详细探讨Nginx location指令的匹配规则,以及如何正确地配置它们来处理各种HTTP请求。 首先,location指令的基本语法是location [修饰符] uri { ... },其中[修饰符]是可选的,uri是要匹配的路径。...

    Nginx location匹配规则的方法示例

    Nginx的location匹配规则非常灵活和强大,可以实现精确匹配、前缀匹配、正则表达式匹配等多种方式。在配置Nginx服务器时,了解location匹配规则的方法至关重要。 location块中的匹配规则可以根据不同的符号进行分类...

    一文弄懂Nginx的location匹配的实现

    location指令是Nginx配置中的核心组件之一,用于根据请求的URI来定位不同的处理方式。学习location匹配规则对于理解如何在Nginx中配置服务器和优化网站性能至关重要。 location指令有多种匹配方式,具体包括精确...

    nginx_location

    Nginx 的 `location` 指令是配置 Web 服务器路由请求的关键部分,用于根据请求的 URI 来决定如何处理请求。以下是对 `location` 指令的详细解释和最佳实践: 1. **匹配规则**: - `=`:精确匹配,如果请求的 URI ...

    nginx location配置详细解释.pdf

    本文将对 Nginx `location` 配置指令进行详细的解释,并结合示例来帮助读者更好地理解和运用。 #### 二、Location 配置指令解析 `location` 指令是 Nginx 配置文件中的一个核心组件,它允许我们基于 URL 对请求...

    详解Nginx之Location配置(Location匹配顺序)

    在Nginx配置中,`location`指令是核心部分,用于根据URI(统一资源标识符)来决定如何处理请求。本篇文章将深入探讨`location`配置的匹配顺序及其在实际应用中的作用。 ### 1. `location`的基础语法 `location`...

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

    因此,了解`location`的匹配规则至关重要。 **2. `location`匹配规则** `location`的匹配规则主要基于以下几种类型: - **精确匹配 (`=`)**: 使用`=`开头表示精确匹配,只有URI与表达式完全一致时才会匹配成功。 ...

    Nginx配置指令location匹配符优先级和安全问题

    在配置Nginx时,`location`指令是核心部分,用于处理不同URI的请求。理解`location`匹配符的优先级和正确配置对于优化服务器性能和确保安全性至关重要。 **一、location匹配符** 1. **等于匹配符:=`** - 精确...

    nginx 配置location匹配规则实例讲解

    在本文中,我们将深入探讨Nginx服务器配置中的核心组件之一——`location`匹配规则。`location`指令在Nginx配置中起着至关重要的作用,因为它决定了如何根据请求的URL路由请求。让我们逐步了解其工作原理和配置实例...

    nginx location中uri的截取的实现方法

    在Nginx配置中,`location`指令是用于匹配HTTP请求URI并执行相应处理的关键部分。本文将深入探讨如何在`location`中实现URI的截取,并解释`root`、`alias`以及`proxy_pass`指令在处理URI时的不同行为。 ### 1. `...

    Nginx配置之location的匹配优先级浅析

    Nginx会按顺序从上到下尝试每个正则表达式,一旦找到匹配的,就执行对应的`location`,并停止进一步的正则匹配。 - `location ~* regex`:不区分大小写的正则匹配。与上面的规则相同,只是不考虑字符的大小写。 ...

Global site tag (gtag.js) - Google Analytics