Nginx中location的作用是依据匹配模式+URI来解决用户申请(转发申请给其余服务器解决或者查找本地文件)。

location语法是: location [ = | ^~ | ~ | ~* ] /URI { … }
其中的 "=", "^~", "~", "~*" 指定匹配模式

location 的匹配先依照优先级匹配,同优先级的状况下,再按先后顺序匹配。(即不齐全依照其在配置文件中呈现的程序进行匹配)

优先级程序从高到低顺次为:

  1. location = /uri1 # 精准匹配/uri1 (uri1必须完全一致能力匹配胜利)
  2. location ^~ /uri2 # 带参前缀匹配 (uri2和申请url的结尾雷同就匹配胜利)
  3. location ~ /uri3 # 正则匹配(辨别大小写)
  4. location ~* /uri4 # 正则匹配(不辨别大小写)
  5. location /uri5 # 一般前缀匹配 (uri5和用户申请url的结尾雷同就匹配胜利,如果有多个一般匹配都匹配胜利则按最长的)
  6. location / # 没有匹配胜利的,走这条规定

1、先精准匹配 = ,精准匹配胜利则会立刻进行其余类型匹配;
2、没有精准匹配胜利时,进行带参前缀匹配。先查找带有 ^~ 的前缀匹配,带有 ^~ 的前缀匹配胜利则立刻进行其余类型匹配;
3、4、= 和 ^~ 均未匹配胜利前提下,查找正则匹配 ~ 和 ~* 。当同时有多个正则匹配时,按其在配置文件中呈现的先后顺序优先匹配,命中则立刻进行其余类型匹配;
5、1234均未匹配胜利,则进入规定5,规定5多个匹配胜利,则进入最长的规定(如有location /static,和location /static/img 两个一般前缀匹配, 当申请是/static/img/111.jpg时,第二个location匹配的更长,所以和/static/img匹配胜利)
6、后面的匹配条件均不满足,就进入这个

完结

同步更新到本人的语雀
https://www.yuque.com/diracke...