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 塊中