# Location
# 匹配 url 加不加/的区别
由于 location 进行的是模糊匹配,所以对于加/的这种情况只能匹配像/taobao/any
这种 url,不加/的情况可以匹配/taobao[any]
这种 url
# 转发 url 加不加/的区别
forward.html
taobao/forward.html
location /taobao/ {
proxy_pass http://127.0.0.1:9001;
}
location /taobao/ {
proxy_pass http://127.0.0.1:9002/;
}
curl http://localhost:9001/taobao/forward.html
curl http://localhost:9002/taobao/forward.html
加/
访问的资源是/usrl/local/test/forward.html
, 不加/
访问的资源是/usrl/local/test/taobao/forward.html
加/
的话相当于绝对路径,不会把location
中匹配的url
代理走,不加/
的话会把匹配的路径部分也给代理走
# 匹配 url 的顺序问题
- 普通 location 之间的顺序规则是有个最大匹配原则,越精确优先级越高
- 正则 location 之间会有顺序,写在前面的会被优先匹配到
- 正则 location 优先级要高于普通的 lcoation
- 精确 location 优先级要高于正则 location
总结 精确匹配 (=) > 正则 lcoation(有顺序限制,只匹配第一个) > 普通 lcoation (最大匹配原则)
这里有个特殊情况是遇到
^~
,在不被覆盖的情况下,不匹配后面的正则 location。