美文网首页
Nginx虚拟目录alias和root的区别

Nginx虚拟目录alias和root的区别

作者: 露馅的番茄 | 来源:发表于2018-06-25 14:20 被阅读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/ 下查找资源

    相关文章

      网友评论

          本文标题:Nginx虚拟目录alias和root的区别

          本文链接:https://www.haomeiwen.com/subject/hkzeyftx.html