nginx配置文件中root和alias的区别
概述
root
和alias
都用于指定请求URL的映射路径
区别
root
指向的映射地址需要通过root
映射地址+location
地址访问。
alias
指向的映射路径便是资源的根目录,只能在location中使用。
[root]
语法:root path
默认值:root html
配置段:http、server、location、if
[alias]
语法:alias path
配置段:location
示例
# 访问http://host/img/0.jpeg,实际请求地址是 /home/wwwroot/resources/img/0.jpeg
# 注意root映射路径 + location路径 = 资源的真实路径
location /img {
root /home/wwwroot/resources/img;
}
# 访问http://host/image/0.jpeg,实际请求地址是 /home/wwwroot/resources/image/0.jpeg
location /image {
alias /home/wwwroot/resources/image;
}
上面配置中指定了两个精确匹配路径:/img和/image
/img 通过root指定映射路径/home/wwwroot/resources/img
/image 通过alias指定映射路径/home/wwwroot/resources/image,
同时我们在/home/wwwroot/resources/img和/home/wwwroot/resources/image两个目录下放同一张图片0.jpeg。
这时候,通过浏览器访问http://host/image/0.jpeg是可以访问到0.jpeg的,即alias指向的映射路径便是资源的根目录。
但是通过http://host/img/0.jpeg是访问不到0.jpeg的,会报404错误,那是因为该请求实际访问的服务器路径是/home/wwwroot/resources/img/img/0.jpeg,从这可以看出当浏览器访问通过root指向的映射地址时,需要拼接location目录,即root映射路径+location路径。
注意:
1. 使用 alias 时,目录名后面一定要加”/”。
2. alias 可以指定任何名称。
3. alias 在使用正则匹配时,必须捕捉要匹配的内容并在指定的内容处使用。
4. alias 只能位于 location 块中