nginx配置文件root 与alias的区别

nginx配置文件root 与alias的区别

先说下需求,我配置了一个站点,设置根目录为 /home/web/soft.99ya.net 然后我希望,当我访问soft.99ya.net/img的时候去/home/web/img.99ya.net这个文件夹下找文件。
这个时候我们应该怎么做呢,我首先想到了root directory这个配置。

server {
    listen       83;
    server_name  soft.99ya.net;
    root /home/web/soft.99ya.net;
    index index.html index.htm ;

    location /img {
      root /home/web/img.99ya.net;
      index index.html index.htm;
    }
    error_log logs/soft.99ya.net-error.log;
}

当我配置好后,我发现,不能访问文件,提示404,然后我就去看错误日志。发现当我访问soft.99ya.net/img的时候,他竟然去/home/web/img.99ya.net/img下找文件。这完全不能实现我的愿望么。于是,
我用了另外一个命令alias 将配置文件,更改为

server {
    listen       83;
    server_name  soft.99ya.net;
    root /home/web/soft.99ya.net;
    index index.html index.htm ;

    location /img {
      alias /home/web/img.99ya.net;
      index index.html index.htm;
    }
    error_log logs/soft.99ya.net-error.log;
}

这个时候,我再次访问的时候,依旧不正常….很悲剧,然后我继续去看错误日志,发现依旧是404找不到文件,然后根据错误,发现了一个让人很纠结的事情。 alias后面跟着的目录,必须以‘/’结尾…这样就可以实现了。

好了,需求实现了,我们最后来总结下。
alias 是一个目录的别名定义,后面的跟着的是相对路径。
root 是对上层目录的定义,后面跟着的是绝对路径。

未经允许不得转载:99ya » nginx配置文件root 与alias的区别

抢沙发