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/。