nginx - alias 和 root 的区别详解
文章目录1. 基本概念2. root 示例3. alias 示例4. 最常见的坑5. 对比总结6. 推荐使用场景7. 总结在使用Nginx部署前端项目或者静态资源时经常会遇到一个问题到底该用root还是alias很多同学第一次写配置时常常把这两个混用导致请求路径解析错误文件404。本文就来详细讲解root与alias的区别并通过案例帮你彻底搞懂。1. 基本概念root将请求路径拼接到root指定的目录下。alias将location 匹配到的路径前缀替换为alias指定的目录。一句话总结 root是拼接路径alias是路径替换。2.root示例location /static/ { root /var/www/html; }请求http://example.com/static/logo.pngNginx 的解析过程root /var/www/html location 匹配 /static/ 请求路径 /static/logo.png 最终文件路径 /var/www/html/static/logo.png✅ 注意/static/仍然会拼接到root后面。3.alias示例location /static/ { alias /var/www/images/; }请求http://example.com/static/logo.pngNginx 的解析过程alias /var/www/images/ location 匹配 /static/ 去掉 /static/剩下 /logo.png 最终文件路径 /var/www/images/logo.png✅ 注意/static/被完全替换成了/var/www/images/。4. 最常见的坑很多人会这样写location /static/ { root /var/www/images/; }然后请求http://example.com/static/logo.pngNginx 实际解析最终路径 /var/www/images/static/logo.png ❌因为root会把location 前缀/static/拼接到后面。正确写法应该是location /static/ { alias /var/www/images/; }这样路径才是/var/www/images/logo.png ✅5. 对比总结特性rootalias作用方式拼接请求路径替换 location 前缀最终路径root location 请求剩余路径alias 请求去掉 location 部分常见用途整个站点的根目录单独路径映射到特殊目录常见错误多拼一层目录忘记在路径后加/6. 推荐使用场景适合用 root配置整个站点根目录server { root /var/www/html; location / { index index.html; } }适合用 alias配置子路径资源映射location /static/ { alias /var/www/project/static/; }7. 总结root拼接路径常用于全局网站目录。alias替换路径常用于某个子路径单独映射。如果要把/static/URL 对应到/var/www/images/目录记得用alias。如果要整个站点都从/var/www/html提供记得用root。 口诀root 拼接alias 替换。 感谢阅读想了解更多 我的博客网站 | 记录思考分享干货 我的个人主页 | 关于我、开源项目