两者区别
使用位置不同
- root指令可位于http, server, location中。
- alias指令只可位于location中。
对location的处理方式不同
当两者都位于location中时, 对于符合location规则的URI处理方式不同。
- 使用root指令,实际指向服务器文件的路径中,包含有location路径。
- 使用alias指令,实际指向服务器文件的路径中,不包含有location路径。
语法要求不同
- alias指令中配置的path必须以"/"结尾
- root指令中配置的path,其结尾可随意;但是建议同样以"/"结尾,方便记忆。
举个栗子
这里主要对比在location中的root和alias的不同。
在访问相同的URI时,会因为不同的指令,其实际指向的文件路径会有区别。
这里以访问 http://www.akio.com/images/logo.jpg 为例。
root配置
location ^~ /images/ {
root /www/akio/html/;
}
其实际指向的文件路径为:/www/akio/html/images/logo.jpg。
alias配置
location ^~ /images/ {
# 这里必须以"/"结尾
alias /www/akio/html/;
}
其实际指向的文件路径为:/www/akio/html/logo.jpg。
如上例:root与alias的主要区别就在于是否包含location配置的路径信息(即:/images)。