%77w%77%2E%66%6F%72%61%73%70%2E%63%6E
在使用nginx 指定uri路径到非root根目录路径时,出现了 对应内容到root 并非alias 的目录,主要原因是,正则匹配顺讯导致。
先看我的问题:我将上传的文件到指定目录,比如png图片
配置如下
root /opt/root;
location /upload/ {
alias /opt/static/upload/;
try_files $uri $uri/ =404;
}
但是访问对应路径,upload/a.png 会自动访问到/opt/root/a.png 而不是 /opt/static/upload 下。
查询发现图片有配置为:
 
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
access_log off;
 
查询nginx 匹配uri 优先级为:
匹配优先级(从高到低):
1. location = /path     (精确匹配)
2. location ^~ /path    (前缀匹配,禁止正则)  
3. location ~ regex     (正则匹配,按顺序,包括匹配 * 正则)    
4. location /path       (普通前缀匹配)    
 
所以会优先匹配到下面的图片配置,也就找到root的地址。
更改配置如下即可:以什么为开头的优先匹配
location ^~ /upload/ {
alias /opt/static/upload/;
try_files $uri $uri/ =404;
}
 
更改后就,重启或者重新reload nginx生效了。

学习www.网for站asp制.cn作