nginx 之root与alias

nginx 作为web服务器的时候配置本地文件路径使用的是root 或者alias 两者有很大的不同。主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。

作用域

[root]   配置段:http、server、location、if。

[alias]  配置段:location。

含义的不同

注意两者不是改变请求的uri 而是在匹配的区域告知请求文件的路径。

root  root路径+客户端uri

root是作为一个最上层的目录,例如请求http://www.kzf.com/test/a.html root配置为 root  html/asdf/dev/  那么文件的寻找路径就是html/asdf/dev/test/a.html。root 后面的路径不会替代location的uri 而是最前面的根路径。

alias      使用alias路径替换location路径

    location  /dev {
       alias /data/nginx/html/alias/;

    }

注意alias后面路径替换的是location中的/dev 而不是客户端请求中的uri。例如请求为http://www.kzf.com/dev/a.html 那么文件寻找路径就是/data/nginx/html/alias/a.html,如果请求是http://www.kzf.com/dev/qa/a.html  那么文件寻找路径就是/data/nginx/html/alias/qa/a.html 并没有替换qa这个路径。

alias是一个目录别名的定义,root则是最上层目录的定义。

注意格式

还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的,如果不配置/ 那么当请求的url 里面的路径最后也没有/ 那么就找不到,如果url 最后有/ 就可以。而root则可有可无

alias 必须配置绝对路径不可用相对路径,而root 可以,因为root 有默认跟路径。例如root  可以配置为 root   html/asdf   但是alias 只能配置为/data/nginx/html/asdf/。

原文地址:https://www.cnblogs.com/fanggege/p/12391468.html