Nginx root 和 alias 路径拼接不同
FreeGuideOnline
最新
2026-07-04
nginx location /images/ { root /var/www/assets; }
**请求映射过程:**
当用户请求 `http://example.com/images/logo.png` 时:
- 最终文件系统路径 = `/var/www/assets` + `/images/logo.png`
- 即:`/var/www/assets/images/logo.png`
可以看出,URI 中的 `/images/` 前缀仍然保留在路径中。`root` 相当于定义了一个基础目录,而 URI 的每一级目录都会被逐一创建或匹配。
#### 2. `alias` 指令的路径替换
`alias` 会丢弃 location 匹配的部分,用 alias 值直接替换。
**配置片段:**
```nginx
location /images/ {
alias /var/www/assets/;
}
同样请求 http://example.com/images/logo.png:
- location 匹配的部分为
/images/,从 URI 中移除后剩下logo.png - 最终路径 =
/var/www/assets/+logo.png - 即:
/var/www/assets/logo.png
这里 /images/ 被完全剥离,不再出现在最终的物理路径中。这就是为什么在 alias 中使用尾部斜杠极其重要。
3. 尾部斜杠的陷阱
-
对于
alias:如果 location 以/结尾,alias值 也必须 以/结尾,否则会产生错误的路径拼接。错误示范:
location /images/ { alias /var/www/assets; # 缺少尾部斜杠 }