摘要:首先,首先会检查所有的前缀,从中选出最长前缀匹配也就是修饰符后面的路径最长的的并记下。然后,如果存在正则时,按照其出现的顺序,依次匹配,找到匹配的正则就不再继续往下,并选择该作为最终的结果。
场景:
在项目开发中经常会遇到nginx配置文件中,会有很多条location配置,却读不懂其中的含义而烦恼Location是什么?
Location是Nginx中的块级指令(block directive),Location基本语法
通过配置Location指令块,可以决定客户端发过来的请求URI如何处理(是映射到本地文件还是转发出去)及被哪个location处理
Location基本匹配规则修饰符(modifier) location [ = | ~ | ~* | ^~ ] uri { ... } location根据不同的修饰符可以分为两大类 1. 前缀location(prefix location): 无修饰符的普通location 带=的精准匹配location 带^~的非正则表达式location 2.正则表达式location(regular expressions location): ~ 区分大小写的正则location ~* 不区分大小写的正则location
匹配规则是指当请求到达nginx时,nginx如何决定该使用哪条location。
首先,nginx首先会检查所有的前缀location,从中选出最长前缀匹配(也就是修饰符后面的路径最长的)的location并记下。Location特殊匹配规则1然后,如果存在正则location时,按照其出现的顺序,依次匹配URI,找到匹配的正则location就不再继续往下,并选择该location作为最终的结果。(划重点:正则location出现的顺序很重要)
如果最长前缀匹配location的修饰符是^~时,就不会检查正则location了,直接选择该location为最终locationLocation特殊匹配规则2
如果存在精准匹配location,且请求的uri跟其完全匹配,选择该精准匹配location作为最终的location测试下自己的理解是否准确:
下面是一个location配置参考,以及不同的请求uri到达nginx时会执行的规则
location = / { [ configuration A ] } location / { [ configuration B ] } location /documents/ { [ configuration C ] } location ^~ /images/ { [ configuration D ] } location ~* .(gif|jpg|jpeg)$ { [ configuration E ] } 请求URI 执行的规则 / A /index.html B /documents/document.html C /images/1.gif D /documents/1.jpg E参考文献:
[Nginx官网location解释][1]
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/39770.html
摘要:我备案了个域名,买了一个阿里云服务器,想要搭建几个自己的网站,难免要接触。创建软链接假如我们每个网站程序放在一个文件夹里,该程序的配置文件也应该放在这个文件夹里才方便管理。 我备案了个域名,买了一个阿里云服务器,想要搭建几个自己的网站,难免要接触 nginx。 那么我用 nginx 来干嘛呢: 静态资源反向代理 将域名泛解析到服务器之后,通过 nginx 来给不同的二级域名分配服务器...
摘要:我备案了个域名,买了一个阿里云服务器,想要搭建几个自己的网站,难免要接触。创建软链接假如我们每个网站程序放在一个文件夹里,该程序的配置文件也应该放在这个文件夹里才方便管理。 我备案了个域名,买了一个阿里云服务器,想要搭建几个自己的网站,难免要接触 nginx。 那么我用 nginx 来干嘛呢: 静态资源反向代理 将域名泛解析到服务器之后,通过 nginx 来给不同的二级域名分配服务器...
摘要:所以到目前为止,基本可以肯定是的上出了一些问题。问题解决因篇幅有限,为了直面本次问题的核心,我不再贴出完整的配置,我简化此次问题的模型。 这是五个小时与一个字符的战斗 是的,作为一个程序员,你往往发现,有的时候你花费了数小时,数天,甚至数星期来查找问题,但最终可能只花费了数秒,改动了数行,甚至几个字符就解决了问题。这次给大家分享一个困扰了我很久,我花了五个小时才查找出问题原因...
摘要:调试的配置标签空格分隔调试配置注该文原文是默认,仅仅记录标准错误日志到默认的文件中,或是被指令指定的文件中。重要对于配置文件的任何改变,你都必须测试和重载的配置文件来让变更生效。将记录最大的消息。 调试 Nginx 的配置 标签(空格分隔): Nginx 调试 Debuging 配置 注:该文原文是 Debugging Nginx Configuration 默认,Ng...
摘要:反向代理要说反向代理,我们就先要理解正向代理下面我们就谈谈正向代理和反向代理吧。客户端才能使用正向代理。反向代理总结就一句话代理端代理的是服务端。因此,动态资源转发到服务器我们就使用到了前面讲到的反向代理了。 反向代理 要说反向代理,我们就先要理解正向代理 ,下面我们就谈谈正向代理和反向代理吧。 正向代理 一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始...
阅读 3160·2023-04-25 19:09
阅读 3873·2021-10-22 09:54
阅读 1742·2021-09-29 09:35
阅读 2904·2021-09-08 09:45
阅读 2230·2021-09-06 15:00
阅读 2765·2019-08-29 15:32
阅读 1028·2019-08-28 18:30
阅读 369·2019-08-26 13:43