我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Nginx的location的常见规则优先级问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Nginx的location的常见规则优先级问题

locaiton有四种类型的匹配规则,分别为完全匹配(=)、前缀普通匹配(^~)、正则表达式匹配(~或者~*)、普通匹配

规则

  • 等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项
  • 前缀普通匹配(^~)优先级次之。不支持正则表达式。使用前缀匹配,如果有多个location匹配的话,则使用表达式最长的那个
  • 正则表达式类型(~ ~*)的优先级次之。一旦匹配成功,则不再查找其他匹配项
  • 常规字符串匹配,如果有多个location匹配的话,则使用表达式最长的那个

说明

  • 先判断精准命中,如果命中,立即返回结果并结束解析过程
  • 若未结束,判断前缀普通命中,如果有多个命中,使用表达式“最长”的命中结果,结束解析过程
  • 若未结束,继续判断正则表达式的匹配,按正则表达式顺序为准,由上至下一旦匹配成功1个,立即返回结果,并结束解析过程
  • 若未结束,继续普通命中,普通命中和前缀普通命中相似,顺序无所谓,按照location表达式的长短来确定命中结果

Location,用来快速进行资源定位,定义不同方式来处理或解决url请求,一般有:/ , = /, ~, ~* ,^~
优先级是:(location = /)>(localtion^~)>(location ~| ~* )>(location /)
其中,~ 与 ~*,谁在上面先匹配谁.

一、Location / 匹配


# "/" 是直接到nginx发布目录/usr/local/nginx/html/里来查资源,比如location.html
location / {
        root   html;
        index  index.html index.htm;
    }

在发布目录里创建location.html文件,内容为:this is location.html。
执行172.16.0.9/location.html时,服务器发布目录里找这个location.html文件,并把结果this is loction.html返回出来,如下:


root@backupserver:/usr/local/nginx/html# ls
50x.html  index.html
root@backupserver:/usr/local/nginx/html# echo "this is  location.html" > ./location.html
root@backupserver:/usr/local/nginx/html# ls
50x.html  index.html  location.html
root@backupserver:/usr/local/nginx/html# /usr/local/nginx/sbin/nginx -s reload
root@backupserver:/usr/local/nginx/html# curl 172.16.0.9/location.html
this is  location.html
root@backupserver:/usr/local/nginx/html# 

在这里插入图片描述

二、Location = / 匹配

精准定位 一般用来匹配某个文件,优先级高于 /
比如:
在nginx配置文件中增加一个location = / ,定位到/data目录。如下:


server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            autoindex on;
            root   html;
            index  index.html index.htm;
        }
        location = /location.html {
            root /data/;
            index index.html;
        }

重启Nginx服务,测试:
1、先不在/data/目录创建location.html。
可以看到,报404错误。这是因为,= / 优先级高于/ ,服务器去第二个location里寻找location.html这个文件,而不是去第一个location里找。由于第二个location指定的目录是/data,/data目录下没有location.html文件

在这里插入图片描述

在/data目录下创建location.html文件


root@backupserver:/usr/local/nginx/html# ls /data/
www
root@backupserver:/usr/local/nginx/html# echo "this is  other location.com" > /data/location.html
root@backupserver:/usr/local/nginx/html# ls
50x.html  index.html  location.html
root@backupserver:/usr/local/nginx/html# curl 172.16.0.9/location.html
this is  other location.com
root@backupserver:/usr/local/nginx/html#

在这里插入图片描述

上面可以看到,访问 服务器是,服务器首先去location = /里面找,即使它在另一个location下面。精准匹配优先级是最高的,它不论是在配置文件内容上面还是下面,服务器首先去找精准匹配的内容

除以精准匹配,还有~ ,~* ,^~
~是对大小写敏感,匹配时严格大小写
~* 是对大小写不敏感,匹配时不分大小写。
^~用来匹配以uri开头,匹配成功以后,会停止搜索后面的正则表达式匹配。
以上优先最高的是精准匹配。location = /,其次是:^,然后是 和~* 这两种看准在配置文件内容上面,就先匹配谁,优先级最低的是 /

以上规则在使用nginx时会被广泛使用,比如多台服务器做网站动静分离时:


location ~ .*\.(html|htm|js|css|txt|png|jpg|jpeg|doc)$ {
root html;
}

到此这篇关于Nginx的location的常见规则优先级的文章就介绍到这了,更多相关Nginx location规则优先级内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Nginx的location的常见规则优先级问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP 中函数调用的优先级规则是什么?

php 中函数调用的优先级遵循特定规则:括号强制优先级高于运算符优先级,且运算符遵循从左到右的关联性。步骤包括:识别函数调用、添加括号,并根据括号内的优先级顺序确定执行顺序。遵守这些规则对于编写可靠的代码至关重要。PHP 中函数调用的优先级
PHP 中函数调用的优先级规则是什么?
2024-04-17

PHP 函数常见错误的修复优先级

php 函数错误的修复优先级为:语法错误:解析时致命错误:运行时e_error:运行时e_warning:运行时e_notice:运行时标题:PHP 函数常见错误的修复优先级PHP 函数的错误修复优先级是 PHP 开发人员应该了解的重要概
PHP 函数常见错误的修复优先级
2024-04-13

bootstrap.yml和bootstrap.properties的优先级问题实例分析

这篇文章主要介绍了bootstrap.yml和bootstrap.properties的优先级问题实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇bootstrap.yml和bootstrap.prope
2023-06-29

快速掌握Go语言中运算符优先级的排序规则

快速掌握Go语言中运算符优先级的排序规则,需要具体代码示例在Go语言中,运算符的优先级决定了表达式中运算符的执行顺序,这对于正确理解和编写代码非常重要。本文将介绍Go语言中运算符的优先级的排序规则,并提供具体的代码示例,帮助读者更快速地掌握
快速掌握Go语言中运算符优先级的排序规则
2023-12-23

C++中常见的编码规范问题的详解

C++中常见的编码规范问题的详解在C++编程中,一个良好的编码规范是保证代码质量和可维护性的关键。它能够提高代码的可读性,降低出错的概率,使得团队协作更加高效。然而,很多开发者在实践中常常忽略一些常见的编码规范问题,导致了代码质量下降。本文
2023-10-22

C++中常见的编码规范问题详解

C++中常见的编码规范问题详解,需要具体代码示例引言:在软件开发过程中,良好的编码规范是确保代码质量的重要因素之一。规范的编码风格可以提高代码的可读性、可维护性以及团队协作效率。本文将详细解析C++中常见的编码规范问题,并提供具体的代码示例
2023-10-22

C++中常见的编码规范问题解析

C++中常见的编码规范问题解析在进行C++开发过程中,遵循一定的编码规范是非常重要的。良好的编码规范可以提高代码的可读性、可维护性和可扩展性,有助于团队合作和项目的成功实施。然而,在实际的开发中,我们常常会遇到一些常见的编码规范问题。本文将
2023-10-22

JavaScript RegExp 方法的常见问题解答:解决常见的正则表达式难题

JavaScript RegExp 方法的常见问题解答:克服常见的正则难题
JavaScript RegExp 方法的常见问题解答:解决常见的正则表达式难题
2024-03-09

怎么理解SpringBoot Bean加载优先级的问题

本篇内容介绍了“怎么理解SpringBoot Bean加载优先级的问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Bean加载优先级的问题
2023-06-25

Laravel与Vue Nginx配置的常见问题如何解决

这篇文章主要讲解了“Laravel与Vue Nginx配置的常见问题如何解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel与Vue Nginx配置的常见问题如何解决”吧!Lar
2023-07-04

C++中常见的代码优化问题详解

C++中常见的代码优化问题详解引言:随着计算机技术的不断发展,提高代码的性能成为了程序员们的首要任务之一。对于C++这一高级编程语言来说,代码优化是非常重要的一环。本篇文章将详细介绍C++中常见的代码优化问题,并给出具体的代码示例。一、避免
2023-10-22

系统升级常见问题解答:解决你的升级难题

系统升级过程中,总会遇到各种各样的常见问题,如何快速找到问题的解决方案并进行解决?本文将提供系统升级常见问题解答,帮助你轻松应对升级过程中遇到的难题,确保系统顺利升级。
系统升级常见问题解答:解决你的升级难题
2024-02-05

C++中常见的编码规范问题及修复方案

C++中常见的编码规范问题及修复方案在C++编程中,遵循良好的编码规范是非常重要的。通过遵守规范,可以提高代码的可读性、可维护性和可扩展性,减少错误和bug的发生。本文将介绍C++中常见的编码规范问题,并给出相应的修复方案,同时附有具体的代
2023-10-22

编程热搜

目录