资讯专栏INFORMATION COLUMN

Nginx location你需要知道这些!

Atom / 2923人阅读

摘要:首先,首先会检查所有的前缀,从中选出最长前缀匹配也就是修饰符后面的路径最长的的并记下。然后,如果存在正则时,按照其出现的顺序,依次匹配,找到匹配的正则就不再继续往下,并选择该作为最终的结果。

场景:
在项目开发中经常会遇到nginx配置文件中,会有很多条location配置,却读不懂其中的含义而烦恼
Location是什么?
Location是Nginx中的块级指令(block directive),
通过配置Location指令块,可以决定客户端发过来的请求URI如何处理(是映射到本地文件还是转发出去)及被哪个location处理
Location基本语法
          修饰符(modifier)         
location [ = | ~ | ~* | ^~ ]     uri     { ... } 
location根据不同的修饰符可以分为两大类
  1. 前缀location(prefix location): 
    无修饰符的普通location
    带=的精准匹配location
    带^~的非正则表达式location
  2.正则表达式location(regular expressions location):
    ~    区分大小写的正则location
    ~*   不区分大小写的正则location
Location基本匹配规则

匹配规则是指当请求到达nginx时,nginx如何决定该使用哪条location。

首先,nginx首先会检查所有的前缀location,从中选出最长前缀匹配(也就是修饰符后面的路径最长的)的location并记下。

然后,如果存在正则location时,按照其出现的顺序,依次匹配URI,找到匹配的正则location就不再继续往下,并选择该location作为最终的结果。(划重点:正则location出现的顺序很重要)

Location特殊匹配规则1
如果最长前缀匹配location的修饰符是^~时,就不会检查正则location了,直接选择该location为最终location
Location特殊匹配规则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 来给不同的二级域名分配服务器...

    Alfred 评论0 收藏0
  • 关于 nginx 前端知道这些就够了

    摘要:我备案了个域名,买了一个阿里云服务器,想要搭建几个自己的网站,难免要接触。创建软链接假如我们每个网站程序放在一个文件夹里,该程序的配置文件也应该放在这个文件夹里才方便管理。 我备案了个域名,买了一个阿里云服务器,想要搭建几个自己的网站,难免要接触 nginx。 那么我用 nginx 来干嘛呢: 静态资源反向代理 将域名泛解析到服务器之后,通过 nginx 来给不同的二级域名分配服务器...

    xiao7cn 评论0 收藏0
  • Nginx location 配置踩坑过程分享

    摘要:所以到目前为止,基本可以肯定是的上出了一些问题。问题解决因篇幅有限,为了直面本次问题的核心,我不再贴出完整的配置,我简化此次问题的模型。 这是五个小时与一个字符的战斗 是的,作为一个程序员,你往往发现,有的时候你花费了数小时,数天,甚至数星期来查找问题,但最终可能只花费了数秒,改动了数行,甚至几个字符就解决了问题。这次给大家分享一个困扰了我很久,我花了五个小时才查找出问题原因...

    alighters 评论0 收藏0
  • 调试 Nginx 的配置

    摘要:调试的配置标签空格分隔调试配置注该文原文是默认,仅仅记录标准错误日志到默认的文件中,或是被指令指定的文件中。重要对于配置文件的任何改变,你都必须测试和重载的配置文件来让变更生效。将记录最大的消息。 调试 Nginx 的配置 标签(空格分隔): Nginx 调试 Debuging 配置 注:该文原文是 Debugging Nginx Configuration 默认,Ng...

    zhunjiee 评论0 收藏0
  • nginx反向代理、动静分离、负载均衡

    摘要:反向代理要说反向代理,我们就先要理解正向代理下面我们就谈谈正向代理和反向代理吧。客户端才能使用正向代理。反向代理总结就一句话代理端代理的是服务端。因此,动态资源转发到服务器我们就使用到了前面讲到的反向代理了。 反向代理 要说反向代理,我们就先要理解正向代理 ,下面我们就谈谈正向代理和反向代理吧。 正向代理 一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始...

    DTeam 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<