在配置 NGINX 文件映射时发现 root 并没有按照期待映射,找解决方法,建议换作 alias 映射目录,不解,查下文档,理解区别。
root
root 指令用于指定搜索文件的根目录。NGINX 将请求 URI 附加到 root
指定的路径。该指令可以放置在 http
,server
或 location
上下文中的任何级别上。
server {
root /www/data;
location / {
}
location /images/ {
}
location ~ \.(mp3|mp4) {
root /www/media;
}
location /static/ {
root /www/media;
}
}
这里我们请求以 /images/
匹配的 URI 时,NGINX 会在 /www/data/images/
目录下查找相应的文件,但是如果 URI 以 .mp3 或 .mp4 扩展名结尾,那么 NGINX 会在 /www/media/
目录中搜索文件,因为它是在匹配的 location 块中定义的。
如果请求以斜线结尾,NGINX 将其视为对目录的请求,并尝试在目录中查找索引文件。index
指令用于定义索引文件的名称(默认值为 index.html)。继续这个例子,如果请求的 URI 是/images/some/path/
,NGINX 查找文件 /www/data/images/some/path/index.html
(如果它存在)。如果不存在,NGINX 默认返回 HTTP 代码 404(未找到)。
location 中的 root 用于指定该路有的相对 root 资源目录,比如上面的 /static/
请求会在 /www/media/static/
下寻找匹配文件。
alias
server {
location / {
}
location /i/ {
alias /data/images/;
}
}
在我们请求/i/top.gif
时,将会查找/data/images/top.gif
该文件。
地址中可以包含变量,具体查看文档。
当 location 匹配指令值的最后一部分时:
location /images/ {
alias /data/w3/images/;
}
最好使用 root 指令替代:
location /images/ {
root /data/w3;
}
总结:
root
UIR 映射 URI + location Pathalias
URI 映射 location
如果请求后缀和文件夹名称相同,建议使用 root
。