nginx aliase失效
今天遇见了nginx配置 aliase失效的情况 原来的配置是
location /image/ {
alias /data/wwwroot/ms-registrationtool.cn/manager/uploadPath/image;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
当访问图片的时候结果遇见无法匹配的情况。后来排查问题后解决。 正确配置是:
location ^~ /profile/ {
alias /data/wwwroot/ms-registrationtool.cn/manager/uploadPath/;
}
结论:由于匹配优先级产生的问题。 记录一下。
1.精确匹配 = 2.前缀匹配 ^~ 3.按文件中顺序的正则匹配 4.匹配不带任何修饰的前缀匹配 5.交给/通用匹配 6.当有匹配成功时候,停止匹配,按当前匹配规则处理请求
location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。 location ~ pattern 开头表示区分大小写的正则匹配 location ~* pattern 开头表示不区分大小写的正则匹配 location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后 location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default 前缀匹配时,Nginx 不对 url 做编码,因此请求为 /static/20%/aa,可以被规则 ^~ /static/ /aa 匹配到(注意是空格)
|