location配置分两种:
(1)普通location配置
location / {
}
#普通location例子2
location /static/ {
}
#普通location例子3
location ^~ /video {
}
#普通location例子4
location = / {
}
#正则表达式location
location ~* \.(gif|jpg|jpeg)${
b. 正则表达式location有顺序关系,如果有多条符合条件的正则表达式的location,则只匹配第一个符合条件的location
(1)普通location配置
(2)正则表达式location配置
例子:
#普通location例子1location / {
}
#普通location例子2
location /static/ {
}
#普通location例子3
location ^~ /video {
}
#普通location例子4
location = / {
}
#正则表达式location
location ~* \.(gif|jpg|jpeg)${
}
如上看到,正则表达式location就是使用了正则表达式语法的location。
普通location就是没有使用正则表达式的 location,其匹配规则如下:
a. 普通location没有顺序关系,配置在前或在后都不会影响匹配结果,如果有多条普通location,则以最大前缀作为匹配结果e.g., http://qunar.com/static/ 这个url会匹配上面的例子2b. 正则表达式location有顺序关系,如果有多条符合条件的正则表达式的location,则只匹配第一个符合条件的location
c. 先匹配普通location,再匹配正则表达式location
所以,一条url的location定位,最多会有两次location匹配:先是找到最大前缀的location,接着找最靠前符合条件的正则表达式location,如果没找到符合条件的正则表达式location,则直接采用普通location的规则。为什么说最多会有两次location匹配,因为在匹配普通location时可以指定,匹配完了普通location,接下来就不要再匹配正则表达式location了,例子3和例子4就是特殊的普通location配置,通过在 “=” 、“~”指定,如果当前普通location匹配成功,则接下来采用该location,而不必继续匹配正则表达式location。“=”、“~”两者的区别在于,前者是严格匹配,也就是url路径中必须每个字符都符合 = 号后的路径,而后者并不是严格匹配。