root指令的核心作用是设定静态文件查找的基准目录,nginx将请求uri(去掉开头/后)原样拼接到该绝对路径末尾以定位文件;需配置于server等块中,优先级location>server>http,末尾不加斜杠,且确保nginx用户有读执行权限。

root 指令的核心作用是告诉 Nginx:所有请求的 URI 路径,都从这个目录开始往下找文件。它不指向某个具体 HTML 文件,而是设定一个“起点目录”,Nginx 会把请求路径(如 /about/index.html)原样拼到该目录后面去查找真实文件。
绝对路径配置(推荐)
绝对路径以 / 开头,清晰明确,不受配置文件位置影响:
- 写法示例:
root /var/www/my-site;或root "/opt/my app";(含空格时用双引号包裹) - 末尾不要加斜杠:
/var/www/my-site✅,/var/www/my-site/❌(虽多数情况能工作,但易引发权限或索引歧义) - 生效位置灵活:可放在
http、server或location块中;优先级为location > server > http - 权限必须到位:确保 Nginx 工作用户(如
www-data或nginx)对目标目录有读取和执行(x)权限
相对路径配置(不建议)
相对路径不以 / 开头,Nginx 会以当前配置文件所在目录为基准解析:
- 例如配置文件在
/etc/nginx/conf.d/default.conf,写root html;→ 实际路径是/etc/nginx/conf.d/html - 不同环境(开发/生产)下配置文件路径可能不同,极易导致部署后 403 或 404
- 若必须用,仅限测试环境,且需确认 Nginx 安装前缀与配置路径关系,风险高
常见拼接逻辑与典型错误
理解 “URI 原样拼接” 是避免 404 的关键:
- 配置
location /admin/ { root /var/www; }→ 请求/admin/index.html查找/var/www/admin/index.html - 配置
location /v2/ { root /data/app; }→ 请求/v2/assets/main.js查找/data/app/v2/assets/main.js - 错误做法:想让
/static/映射到/opt/build/static,却用root /opt/build/static;→ 实际会去找/opt/build/static/static/...,多了一层static - 正确做法:这种场景应改用
alias /opt/build/static/;(注意 alias 后必须带结尾斜杠)
实用配置建议
保持结构清晰、行为可预期:
- 主站根目录统一在
server块顶部设置:root /srv/www/example; - 子路径资源需独立物理路径时,优先用
alias(如前端构建产物、上传目录),避免 root 拼接带来的路径冗余 - 单页应用(SPA)必须配合
try_files $uri $uri/ /index.html;,否则刷新子路由会 404 - 首页自动加载依赖
index index.html;,否则访问/可能返回 403(无目录列表)或 404(无默认文件)











