root与alias的区别
来源:网络
点击数: 次
发布时间:2026年09月04日
一、你选的是精装还是毛坯?
买房子的时候,同样一个门牌号(URL),走进去看到的房间布局(文件路径)可以完全不同——这取决于你选的是精装(root)还是毛坯(alias)。
Nginx 处理静态文件时,有两套截然不同的"装修方案",搞混了,文件就找不到了。
二、root:把你的门牌号完整搬进来
root 的逻辑很直观:URL 的完整路径会原封不动地追加到 root 指定的目录后面。
当请求 http://example.com/images/photo.jpg 时,Nginx 找的文件是:
📁 物理路径:/var/www/images/photo.jpgroot /var/www/images/photo.jpg → 拼接 |
root 的本质是路径拼接,URL 路径原样保留。
三、alias:换个门牌号进不同的房间
alias 的逻辑是路径替换——把 location 匹配到的部分替换成 alias 指定的路径。
同样请求 http://example.com/images/photo.jpg,Nginx 找的文件是:
📁 物理路径:/data/photos/photo.jpg/images/ 被替换成了 /data/photos/,后面的 photo.jpg 保持不变。 |
四、核心对比:拼接 vs 替换
/var/www/images/a.jpg | /data/p/a.jpg | |
| 必须对齐 | ||
五、alias 的斜杠噩梦
alias 有一个让人抓狂的规则:location 的尾部斜杠和 alias 的尾部斜杠必须对齐。
✅ 正确写法:两边都带斜杠
→ /images/photo.jpg → /data/photos/photo.jpg ✅
❌ 错误写法:alias 漏了斜杠
→ /images/photo.jpg → /data/photosphoto.jpg ❌ 文件名和目录拼在一起了!
| ⚠️ 记住口诀: |
六、alias 的另一个坑:与 try_files 不兼容
try_files 在内部处理时,会把文件路径重新拼回 root 的方式,所以 alias 和 try_files 放在同一个 location 里会出问题:
如果需要用 try_files,建议配合 root 使用。
七、什么时候该用哪个?
💡 原则:root 就用 root,alias 只在你确实需要路径替换时再用——并且记得对齐斜杠。 |
八、装修风格的哲学
root 是延续——URL 的结构延伸到文件系统,保持一致性,一目了然。
alias 是改造——打破 URL 和文件系统的一一对应,给空间赋予新的可能。
