标签:
nginx中location有几种:
1.前缀,可以有=或^~修饰,比如
location / /开头的
location /img/ /img/开头的
location = /a.htm 刚好/a.htm
location ^~ /d 匹配后不再检查正则表达式location。注意这个意思不是非正则表达式!除了~开头其他都是非正则表达式,也就是前缀匹配
2.正则表达式,固定~或~*(不区分大小写)开头,比如:
location ~ \.html$
location ~* \.gif$
同时有多个location时,优先级如下:
1.Test the URI against all prefix strings.
和所有前缀比较没有正则匹配,则使用刚才最长前缀
所以,nginx的location中,~开头的正则表达式配置顺序会影响效果,而非~开头的前缀匹配则和配置顺序完全无关。
建议按如下顺叙写配置文件:
# =开头的精确前缀匹配优先最高
location = /a.html{}
# ^~开头的,禁止再匹配正则的前缀匹配
location ^~ /img{}
#但是这里注意 ,如果后面有 location /img/abc{},且能匹配,那么上面这条无法匹配
#所以建议一旦一个前缀以^~开头,则其下的前缀配置也都用^~
# 正则表达式,注意这部分需要考虑配置顺序
location ~ \.*.htm$ {} #/a/b.htm匹配这个而不是下面的,仅仅因为这行在前
location ~ ^\/a {}
# 其他非 ^~ 与=开头的前缀匹配,虽然顺序无关,但建议把长的放前面
location /abc/df {}
#最后匹配的
location / {}
这样检查配置时,从上往下,匹配了,就不用看后面的了
标签:
原文地址:http://blog.csdn.net/qq_16414307/article/details/51364996