要理解root与alias的区别!!
例一:
注意location中的配置:
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /asr {
alias /mnt/demo/asr; #注意这里!!
autoindex on;
}
……
}
如上代码,
若想要访问实际目录为 “ /mnt/demo/asr ” 文件夹,则URL为http:localhost:8080/asr:
alias:需要配置为 “ alias /mnt/demo/asr ” 。即给asr文件夹起个别名。
root :需要配置为 “ root /mnt/demo ” 。把asr的上层目录替换了,最后合并为:/mnt/demo + /asr。
若为 “ root /mnt/demo/asr ” ,则就是:/mnt/demo/asr/asr,所以就访问不到了!!!!!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
例二:
location /img/ {
alias /var/www/image/;
}
#若按照上述配置的话,则访问/img/目录里的文件时,ningx会去/var/www/image/目录里找文件。
location /img/ {
root /var/www/image/;
}
#若按照这种配置的话,则访问/img/目录里的文件时,nginx会去/var/www/image/img/目录里找文件。
总结:
1. alias是一个目录别名的定义,root则是对上层目录的定义。(所以我个人觉得一般建议使用alias,更直观,易理解!)
2. 还有一个重要的区别是:
①alias中,如果location后面带“/”结束(如:location /img/),则alias后面也必须要用“/”结束。
如果location后面不带“/”结束(如:location /img),则alias后面也必须没有,否则会找不到文件的。。。
②而root则可有可无~~