一 location规则
基本语法: location [=|~|~*|^~]/uri/{…}
修饰符释义:
对请求的url序列化。例如,对%xx等字符进行解码,去除url中多个相连的/,解析url中的.,..等。这一步是匹配的前置工作。
location有两种表示形式,一种是使用前缀字符,一种是使用带~或~*修饰符的正则。
其相应的匹配过程如下:
注意:普通命中顺序无所谓,是因为按命中的长短来确定。正则命中,顺序有所谓,因为是从前入往后命中的。
基于以上的匹配过程,我们可以得到以下两点启示:
由location匹配规则可知,其匹配优先级为:(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/) 。
二 location规则示例
访问:http://location.linuxds.com/,将匹配规则A:
访问:http://location.linuxds.com/login,将匹配规则B:
访问:http://location.linuxds.com/static/test.html,将匹配规则C:
访问:http://location.linuxds.com/static/files/test.txt,将匹配规则D:
解释:虽然也符合规则C,但基于最大匹配原则,因此优先选择规则D。
访问:http://location.linuxds.com/test.txt,将匹配规则E:
解释:虽然也符合规则F,但正则中基于顺序优先,因此优先选择规则E。
访问:http://location.linuxds.com/static/test.txt,将匹配规则C:
解释:虽然也符合规则F,但基于匹配优先级^~ > ~,~*,因此优先选择规则C。
访问:http://location.linuxds.com/test.TXT,将匹配规则G:
解释:规则E区分大小写,规则F不区分大小写,因此优先选择规则F。
访问:http://location.linuxds.com/image/test.txt,将匹配规则E:
解释:虽然也符合规则Y,但基于正则匹配优先,因此优选选择规则E。
访问:http://location.linuxds.com/image/test.tiff,将匹配规则G:
解释:没有更高优先级的其他规则(正则或=),因此匹配规则G。
访问:http://location.linuxds.com/work/1234,将匹配规则I:
解释:如上除H之外所有规则都不匹配,所有的地址都以 / 开头,所以这条规则将作为最后匹配规则。
参考:
http://www.zzvips.com/article/33760.html
https://juejin.im/post/5ce5e1f65188254159084141
http://www.zzvips.com/article/33760.html
https://www.nginx.cn/doc/standard/httpcore.html #官方参考
三 正则与判断
参考:https://blog.csdn.net/weixin_33726943/article/details/86007331
Original: https://www.cnblogs.com/itzgr/p/13359249.html
Author: 木二
Title: 附001.Nginx location语法规则
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544071/
转载文章受原作者版权保护。转载请注明原作者出处!