Nginx配置里alias和root的區別
我們用一種非常容易理解的方式來解釋 alias 和 root 的區別。
核心比喻:問路
想象一下你在問路:
-
root就像告訴你一個「大本營」的地址 -
alias就像給你一個「精確的目的地」地址
1. root 指令:告訴你大本營在哪里
工作方式:請求的URI路徑會完整地追加到root指定的路徑后面。
舉個例子:
nginx
location /images/ {
root /data/website;
}
訪問過程:
-
你訪問:
http://yoursite.com/images/cat.jpg -
Nginx 的處理思路:
-
找到「大本營」:
/data/website -
把請求的完整路徑
/images/cat.jpg直接拼接到大本營后面 -
最終去找:
/data/website/images/cat.jpg
-
? 適用場景: 設置靜態文件的根目錄
2. alias 指令:給你精確的目的地地址
工作方式:用alias的路徑完全替換location匹配到的部分。
舉個例子:
nginx
location /static/ {
alias /data/website/assets/;
}
訪問過程:
-
你訪問:
http://yoursite.com/static/logo.png -
Nginx 的處理思路:
-
匹配到
/static/這部分 -
用
/data/website/assets/完全替換掉/static/ -
最終去找:
/data/website/assets/logo.png
-
? 適用場景: 將URL路徑映射到文件系統完全不同的路徑
對比表格
| 特征 | root | alias |
|---|---|---|
| 工作方式 | 追加完整URI路徑 | 替換匹配到的部分 |
| 思維模式 | 告訴你大本營 | 給你精確目的地 |
| 路徑處理 | root路徑 + 完整URI |
alias路徑 + (URI - 匹配部分) |
| 常用場景 | 靜態文件根目錄 | 特殊路徑映射 |
最容易出錯的例子
nginx
# 錯誤用法:想要訪問 /data/files/download/test.txt
location /download/ {
alias /data/files/;
# 訪問 /download/test.txt 會變成 /data/files/test.txt
# 但文件實際在 /data/files/download/test.txt
}
# 正確用法:
location /download/ {
alias /data/files/download/;
# 訪問 /download/test.txt 會變成 /data/files/download/test.txt ?
}
簡單記憶口訣
「root是加,alias是換」
用
root:路徑會變長用
alias:路徑會替換
記住這個口訣,你就基本不會用錯了!

浙公網安備 33010602011771號