root 指令在 location 中是将完整请求 URI(含匹配前缀)拼接到指定路径后,如 location /static/ { root /var/www; } 请求 /static/css/app.css 时查找 /var/www/static/css/app.css。

Nginx 中 root 指令在 location 块里,作用是为该 location 下的所有请求指定一个基础文件系统路径,并把完整的请求 URI(含 location 匹配部分)拼接到这个路径后面。
简单说:
root是“追加路径”,不是“替换”。
✅ 正确用法与逻辑
假设配置如下:
location /static/ {
root /var/www;
}
当用户请求 /static/css/app.css 时,Nginx 实际查找的文件路径是:
/var/www/static/css/app.css
注意:/static/ 这个前缀被完整保留并拼到了 /var/www 后面。
所以 /var/www 目录下必须真实存在 static/ 子目录,否则返回 404。
? 关键细节
root值末尾写不写/都可以,Nginx 会自动处理,但建议统一写成/var/www/,更清晰。root可用于http、server、location级别;而alias只能在location中用。-
location /配合root是最常见整站部署方式,比如:location / { root /var/www/dist; index index.html; }请求
/→ 找/var/www/dist/index.html
请求/about→ 找/var/www/dist/about(可能是目录或文件) 如果
location写成/app(无结尾/),而root是/opt/myapp,那么请求/applogo.png会被拼成/opt/myapp/applogo.png—— 注意它不会自动加斜杠分隔,容易出错。
⚠️ 常见错误
- 把
root当成alias用,以为/static/会跳过static/目录层级,结果找不到文件。 -
root路径下缺少对应子目录(如/var/www下没有static/),直接 404。 - 在
location /api/里用root /opt/backend,期望访问/api/v1/users对应/opt/backend/v1/users—— 错!实际找的是/opt/backend/api/v1/users。
? 小结一句话
root 在 location 中,就是“我在哪找文件” + “你请求的完整路径(含匹配前缀)就是相对位置”。
结构一致、路径对得上,就用 root;不对得上、要跳过某段 URL 前缀,就该换 alias。











