Nginx虚拟目录alias和root的区别

2018-06-25  本文已影响19人  露馅的番茄

nginx中alias标签和root标签到底有哪些区别呢?

1.alias指定的目录是location匹配访问的path目录下的文件,直接从alias的目录下查找,并且alias指定的目录后面必须要加上"/"符号。;

注:alias虚拟目录配置时,location匹配的目录如果后面不带"/",那么访问的地址的目录后面加不加"/"不影响访问,访问时它会自动加上"/";但是如果location匹配的目录后面加上"/",那么访问的地址的目录必须要加上"/",访问时它不会自动加上"/"。如果不加"/",访问就会找不到你想要的资源。

2.root指定的目录是location匹配访问的目录的上一级目录,这个目录一定要是真实存在root指定目录下的;root目录配置中,location匹配的目录后面带不带"/",都不会影响访问。

例如:(nginx配置的域名是www.baidu1.com)

<1>

location /baidu/ {

alias  /www/baidu/;

}

在上面alias虚拟目录配置下,访问http://www.baidu1.com/baidu/ceshi.html 真实路径是/www/baidu/ceshi.html。

上段案例也可用root目录配置:

location /baidu/ {

root  /www/;

}

两者配置后的访问效果是一样的!


<2>

上面的案例中alias的虚拟目录名和location匹配访问的目录名是一样的,所以可以直接改成root目录配置,那要是不一样呢?

例如:

location /aaa/ {

      alias /www/baidu/;

}

访问http://www.baidu.com/aaa 的时候就会去/www/baidu/ 下查找资源,这样的话,就不能直接改成root目录配置。

如果非要改成root目录配置,就只能在/www下将baidu目录同步为aaa目录,如下:

location /aaa/ {

root /www/;

}

# ln -s /www/aaa /www/baidu/

 即保持/www/aaa和/www/baidu 内容一样,这样访问http://www.baidu.com/aaa 的时候也会去/www/baidu/ 下查找资源

上一篇下一篇

猜你喜欢

热点阅读