root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
alias是一个目录别名的定义(仅能用于location上下文),root则是最上层目录的定义。
直接通过例子来理解:
root
location ^~ /123/abc/ {
root /data/www;
}
当请求http://blog.xxx.com/123/abc/logo.png
时,将会返回服务器上的/data/www/123/abc/logo.png
文件,即/data/www+/123/abc/
alias
location ^~ /123/abc/ {
alias /data/www;
}
当请求http://blog.xxx.com/123/abc/logo.png
时,将会返回服务器上的/data/www/logo.png
文件,即/data/www
参考:
http://nginx.org/en/docs/http/ngx_http_core_module.html#alias