root 是“根目录+完整URI”,alias 是“替换location前缀”;root可置于server或location块、末尾斜杠可选,alias仅限location块、末尾必须加斜杠且支持正则捕获。

root 和 alias 在 Nginx 配置中都用于指定静态文件的物理路径,但它们的结构逻辑完全不同:root 是“根目录 + 完整 URI”,alias 是“用指定路径替换 location 匹配部分”。
root 的结构:路径拼接,保留 URI 全貌
root 指令不改变请求 URI 的任何部分,只是把整个 URI(包括 location 前缀)直接追加到 root 路径后面。
- location /static/ { root /var/www/html; } → 请求 /static/js/app.js 对应文件路径是 /var/www/html/static/js/app.js
- location /web/ { root /var/www/project/dist; } → 请求 /web/index.html 实际查找 /var/www/project/dist/web/index.html(dist 下必须有 web 目录)
- root 可出现在 server 或 location 块中;路径末尾加不加 / 不影响行为
alias 的结构:路径替换,剥离 location 前缀
alias 把 location 中匹配到的 URI 前缀完全去掉,只把剩余路径拼接到 alias 指定的目录后。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- location /static/ { alias /var/www/assets/; } → 请求 /static/js/app.js 对应 /var/www/assets/js/app.js
- location /web/ { alias /var/www/project/dist/; } → 请求 /web/index.html 查找 /var/www/project/dist/index.html(dist 下无需 web 子目录)
- alias 只能用在 location 块内;路径末尾必须加 /,否则可能 404
配置位置与语法约束差异
结构上,二者生效范围和书写规范也不同:
- root 可独立写在 server 块里,作为全局默认根目录;alias 不允许出现在 server 级别,只能嵌套在 location 中
- alias 后的路径支持变量(如 $host),但不能含 document_root 或 realpath_root;root 后路径也可含变量,限制更少
- 当 location 使用正则表达式时,alias 必须配合捕获组(如 location ~ ^/img/(.+)$ { alias /data/pics/$1; }),root 则无此要求
典型结构误用场景
结构错误往往直接导致 404,关键看物理路径是否真实存在:
- 用 root 配置前端构建产物(如 Vue 打包后放在 dist/),却把 location 设为 /app/,结果 Nginx 去找 dist/app/index.html —— 而实际文件在 dist/index.html
- 用 alias 时漏掉结尾斜杠:alias /var/www/html 写成 alias /var/www/html,Nginx 会尝试打开 /var/www/htmlindex.html(连在一起),而非 /var/www/html/index.html
- 在非 location 块中误写 alias,配置校验(nginx -t)会直接报错:“unknown directive ‘alias’”

















