这种经常容易搞混,记录一下:

alias实现虚拟目录 alias与root的用法区别

最基本的区别:alias指定的目录是准确的,root是指定目录的上级目录,并且该上级目录要含有location指定名称的同名目录。另外,根据前文所述,使用alias标签的目录块中不能使用rewrite的break。

(1) . alias虚拟目录配置中,location匹配的path目录如果后面不带"/",那么访问的url地址中这个path目录后面加不加"/"不影响访问,访问时它会自动加上"/";

但是如果location匹配的path目录后面加上"/",那么访问的url地址中这个path目录必须要加上"/",访问时它不会自动加上"/"。如果不加上"/",访问就会失败!

(2) . root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。

所以,一般情况下,在nginx配置中的良好习惯是:
1)在location /中配置root目录;
2)在location /path中配置alias虚拟目录。

When location matches the last part of the directive’s value:

location /images/ {
alias /data/w3/images/;
}
it is better to use the root directive instead:

location /images/ {
root /data/w3;
}