Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx的location优先级

nginx的location优先级

作者头像
老七Linux
发布于 2018-05-09 08:21:11
发布于 2018-05-09 08:21:11
11.5K00
代码可运行
举报
运行总次数:0
代码可运行

在nginx配置文件中,location主要有这几种形式:

  1. 正则匹配 location ~ /abc { }
  2. 不区分大小写的正则匹配 location ~* /abc { }
  3. 匹配路径的前缀,如果找到停止搜索 location ^~ /abc { }
  4. 精确匹配 location = /abc { }
  5. 普通路径前缀匹配 location /abc { }
优先级

4 > 3 > 2 > 1 > 5


解释一下各个格式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location = / {
# 精确匹配 / ,主机名后面不能带任何字符串
[ configuration A ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location / {
# 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求
# 但是正则和最长字符串会优先匹配
[ configuration B ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location /documents/ {

# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ configuration C ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ /documents/Abc {

# 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索
# 只有后面的正则表达式没有匹配到时,这一条才会采用这一条
[ configuration CC ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ^~ /images/ {

# 匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。
[ configuration D ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~* \.(gif|jpg|jpeg)$ {

# 匹配所有以 gif,jpg或jpeg 结尾的请求
# 然而,所有请求 /images/ 下的图片会被 config D 处理,因为 ^~ 到达不了这一条正则
[ configuration E ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location /images/ {

# 字符匹配到 /images/,继续往下,会发现 ^~ 存在
[ configuration F ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location /images/abc {

# 最长字符匹配到 /images/abc,继续往下,会发现 ^~ 存在
# FG的放置顺序是没有关系的
[ configuration G ]
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~ /images/abc/ {

# 只有去掉 config D 才有效:先最长匹配 config G 开头的地址,继续往下搜索,匹配到这一条正则,采用
[ configuration H ]
}

再来分析一下A-H配置的执行顺序。

  1. 下面2个配置同时存在时
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location = / {
[ configuration A ]
}

location / {
[ configuration B ]
}

此时A生效,因为=/优先级高于/
  1. 下面3个配置同时存在时:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location  /documents/ {
[ configuration C ]
}

location ~ /documents/ {

[configuration CB]

}

location ~ /documents/abc {
[ configuration CC ]
}

当访问的url为/documents/abc/1.html,此时CC生效,首先CB优先级高于C,而CC更优先于CB
  1. 下面4个配置同时存在时
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ^~ /images/ {
[ configuration D ]
}

location /images/ {
[ configuration F ]
}

location /images/abc {
[ configuration G ]
}

location ~ /images/abc/ {
[ configuration H ]
}

当访问的链接为/images/abc/123.jpg时,此时D生效。虽然4个规则都能匹配到,但^~优先级是最高的。

若^~不存在时,H优先,因为~/images/ > /images//images//images/abc同时存在时,/images/abc优先级更高,因为后者更加精准
  1. 下面两个配置同时存在时
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}

location ~ /images/abc/ {

[ configuration H ]
}

当访问的链接为/images/abc/123.jpg时,E生效。因为上面的规则更加精准。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/08/15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nginx之location详解
3、一旦配置请求location映射到了指定的位置,那么下面全部的文件夹和文件都可以映射到,不需要在配置对其的映射,比如,但是如果使用其中的文件名重新映射了地址,那么这个路径将不能使用
爱撒谎的男孩
2019/12/31
8980
nginx location匹配规则
~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 =      #进行普通字符精确匹配 @     #”@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
zhangdd
2018/08/01
7080
nginx中的location & root & alias & rewrite
注意: alias只能用于location中(使用alias,目录名后面一定要加“/”),而root可以用在http、server和location中。
阿dai学长
2019/04/03
2.9K0
Nginx Location 匹配规则
Nginx 的 location 用于匹配 URI 不同路径的请求,实现对请求的细分处理。例如当客户端请求 https://www.nginx-test.com/index.html 时,Nginx 使用本地的静态文件响应,而当客户端请求相同地址的 https://www.nginx-test.com/api 时,Nginx 将请求转发到后端服务器。
Se7en258
2021/07/01
1.5K0
Nginx中location、rewrite使用方法
矫正: location 的匹配顺序其实是“先匹配普通,再匹配正则”。我这么说,大家一定会反驳我,因为按“先匹配普通,再匹配正则”解释不了大家平时习惯的按“先匹配正则,再匹配普通”的实践经验。这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配。
星哥玩云
2022/07/28
1.2K0
Nginx中location、rewrite使用方法
nginx location匹配方式
如果location为前缀匹配,url以/结尾,并且请求会被 proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass或者grpc_pass中的一个处理,如果请求结尾不带/,nginx会返回一个 301 重定向,如:
saosir
2019/08/13
1.2K0
nginx location匹配方式
nginx路径匹配_url路径匹配
一、前言 一般我们经常在访问网站时,通常会遇到输入某个页面的网址时,出现路由的转发,重定向等。可能访问的是一个网址,出来的时候就显示的是另外的地址。 这种情况下,通常属于nginx的页面跳转。
全栈程序员站长
2022/11/19
6.6K0
nginx路径匹配_url路径匹配
掌握Nginx的location优先级
近几年Nginx在企业上的应用很广泛,但很多朋友还是不知道Nginx的location优先级,如果不能清晰的掌握nginx的location优先级,就会在配置Nginx的时候引起错误的跳转,错误的跳转往往就是一次严重的线上事故。因此,掌握Nginx的location优先级非常重要。
星哥玩云
2022/07/26
6700
掌握Nginx的location优先级
Nginx的location匹配指令及常用内置变量
有如下指令语法可使用 ~ #区分大小写的正则匹配 ~* #不区分大小写的正则匹配 ^~ #普通字符匹配,如果此选项匹配成功,忽略其他匹配选项,一般用来匹配目录 = #普通字符精确匹配 @ #定义一个内部命名的匹配,适用于error_page,try_files 匹配执行顺序及优先级: - = 精确匹配 精确匹配会第一个被处理,如果精确匹配成功,停止搜索其他匹配模式,直接使用精确匹配 - 普通字符(/download,/img,
luxixing
2019/05/29
1.5K0
手把手教你,嘴对嘴传达------深入介绍Nginx的rewrite模块(理论加实验)
location = patt {} [精准匹配] ocation patt {} [一般匹配 ] location ~ patt {} [正则匹配]
不吃小白菜
2020/09/03
7160
手把手教你,嘴对嘴传达------深入介绍Nginx的rewrite模块(理论加实验)
附001.Nginx location语法规则
对请求的url序列化。例如,对%xx等字符进行解码,去除url中多个相连的/,解析url中的.,..等。这一步是匹配的前置工作。
木二
2020/07/22
3.1K0
Nginx详解Location匹配规则
本文我们来给大家详细介绍下Nginx中的核心配置文件中的Location匹配规则。   location会尝试根据用户请求中的URI来匹配上面的/uri表达式,如果可以匹配,就选择location{}块中的配置来处理用户请求。当然,匹配方式是多样的, 下面介绍location的匹配规则。 语法:
用户4919348
2020/05/21
3.5K0
深入 Nginx 之配置篇
在工作中,我们与 Nginx 打交道更多的是通过其配置文件来进行。那么掌握这些配置项各自的作用就很有必要了。
全栈程序员站长
2022/07/08
3750
Nginx的location区块的作用及设置
location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。
星哥玩云
2022/07/13
5300
Nginx的location区块的作用及设置
nginx rewrite 跨域
作用域:server 、location、if 功能:如果一个URI匹配指定的正则表达式regex,URI就按照 replacement 重写。 rewrite 按配置文件中出现的顺序执行。 可以使用 flag 标志来终止指令的进一步处理。 如果 replacement 以 http:// 、 https:// 或 $ scheme 开始,将不再继续处理,这个重定向将返回给客户端。 rewrite后的请求参数 如果replacement包含新的请求参数,则在它之后附加先前的请求参数; 如果不想要之前的请求参数,则在replacement的末尾加一个问号,来避免附加先前的参数。
IT云清
2020/07/23
2.7K0
Nginx配置location总结及rewrite规则写法
location = / {     # 精确匹配 /,主机名后面不能带任何字符串     [ configuration A ]  } location / {     # 因为所有的地址都以/开头,所有这条规则将匹配到所有请求     # 但是正则和最长字符串会优先匹配     [ configuration B ] } location /documents/ {     # 匹配任何以/documents/开头的地址,匹配符合以后,还要继续往下搜索     # 只有后面的正则表达式没有匹配到时,这一条才会采用     [ configuration C ] } location ~ /documents/Abc {     # 匹配任何以 /documents/开头的地址,匹配符合以后,还要继续往下搜索     # 只有后面的正则表达式没有匹配到时,才会采用这一条      [ configuration CC ] } location ^~ /images/ {     # 匹配任何以/images/开头的地址,匹配符合以后,停止往下搜索正则,采用这一条     [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ {     # 匹配所有以gif,jpg或jpeg结尾的请求     # 然而,苏朋友请求/images/下的图片会被config D处理,因为^~到达不了这一正则     [ configuration E ] } location /images/ {     # 字符匹配到 /images/,继续往下,会发现^~存在     [ configuration F ] } location /images/abc {     # 最长字符匹配到/images/abc,继续往下,会发现^~存在     # F与G的放置顺序是没有关系的     [ configuration G ] } location ~ /images/abc/ {     # 只有去掉config D才有效:先最长匹配config G开头的地址,继续往下搜索,匹配到这一正则,采用     [ configuration H ] } location ~* /js/.*/\.js
星哥玩云
2022/07/29
1.1K0
nginx的location、rewrite玩法详解
顺序 no优先级: (location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/)
sunsky
2020/08/20
1.2K0
建议收藏 | 彻底搞懂 Nginx 的五大应用场景
导读:Nginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。
码农架构
2021/07/09
1K0
建议收藏 | 彻底搞懂 Nginx 的五大应用场景
Nginx Location和Rewrite深入剖析
Nginx由内核和模块组成,其中内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端的请求映射到一个location block,而location是Nginx配置中的一个指令,用于访问的URL匹配,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
星哥玩云
2022/07/26
7650
Nginx学习之location匹配规则
介绍 location指令是http模块当中最核心的一项配置,根据预先定义的URL匹配规则来接收用户发送的请求,根据匹配结果,将请求转发到后台服务器、非法的请求直接拒绝并返回403、404、500错误处理等。 location 的匹配符 ~ 波浪线表示执行一个正则匹配,区分大小写 ~* 表示执行一个正则匹配,不区分大小写 ^~ 表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 = 进行普通字符精确匹配 @ 定义一个命名的 location,使用在内部定向时,例如 error_
小柒2012
2018/04/13
7940
推荐阅读
相关推荐
Nginx之location详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验