我们用一种非常容易理解的方式来解释 alias
和 root
的区别。
核心比喻:问路
想象一下你在问路:
-
root
就像告诉你一个「大本营」的地址 -
alias
就像给你一个「精确的目的地」地址
1. root
指令:告诉你大本营在哪里
工作方式:请求的URI路径会完整地追加到root指定的路径后面。
举个例子:
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匹配到的部分。
举个例子:
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 - 匹配部分) |
常用场景 | 静态文件根目录 | 特殊路径映射 |
最容易出错的例子
# 错误用法:想要访问 /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
:路径会替换
记住这个口诀,你就基本不会用错了!