Nginx配置中Location的优先级

根据Nginx的官方文档,Location标签一共有四个修饰符,分别是:

(1) =:表示完全匹配;

(2) ^~:匹配URI的前缀,并且后面的正则表达式不再匹配,如果一个URI同时满足两个规则的话,匹配最长的规则;

(3) ~:匹配正则表达式,大小写敏感;

(4) ~*:匹配正则表达式,大小写不敏感;

优先级:(1)> (2) > (3) = (4)

就是完全匹配=的优先级是最高的,其次是^~,最后就是正则表达式的匹配。

换言之,一个URI请求首先检查是否符合=的规则,如果符合就直接返回结果,否则继续匹配^~的规则,如果^~规则不匹配,那么就匹配~~*,正则匹配的先后顺序是:在配置文件中先出现的先匹配,匹配成功就不再匹配后面的正则表达式。

注意:即使是在~~*同时出现的情况,仍然按照出现的顺序进行匹配。

例子:

1location ~ /.*\.php { 2 root /var/www/html/php; 3 include snippets/fastcgi-php.conf; 4 fastcgi_pass unix:/run/php/php7.3-fpm.sock; 5} 6location ~* /ddd.*\.php { 7 root /var/www/html; 8 include snippets/fastcgi-php.conf; 9 fastcgi_pass unix:/run/php/php7.3-fpm.sock; 10}

我们尝试访问http://192.168.1.128/ddd.php,那么实际上读取的是/var/www/html/php/ddd.php。虽然两个规则都是匹配的,但是第一个规则出现在先,所以第一个规则优先匹配,读取的是/var/www/html/php/ddd.php

最后,如果上面的四个规则都不匹配,那么就是直接匹配URI的前缀,譬如:location /abc.php

参考文献:

http://nginx.org/en/docs/http/ngx_http_core_module.html#location

https://www.bo56.com/nginx-location%E5%9C%A8%E9%85%8D%E7%BD%AE%E4%B8%AD%E7%9A%84%E4%BC%98%E5%85%88%E7%BA%A7/

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python基础11——正则表达式

19正则表达式19.1正则基础正则表达式:字符串处理工具应用场景1.html查询2.验证字符串是否符合规则re模块match方法python通过正则表达式对字符串进行匹配importre使用match方法进行匹配操作re.match()从字符串的开始位置进行匹配,匹配成功,返回match对象。匹配失败,返回Noneresre

Nginx 伪静态Rewrite,重定向Location配置总结(转)

语法规则:location\|~|~\|^~\/uri/{…}\开头表示精确匹配^~开头表示uri以某个常规字符串开头,理解为匹配url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~/static//aa匹配到(注意是空格)。~开头表示区分大小写的正则匹配~\ 

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

Nginx配置中Location的优先级 - HelloWorld