root指令的作用是设定静态文件查找的基准目录,Nginx将请求URI完整路径(除开头/外)拼接到root指定路径后查找文件,如root /var/www;请求/about/index.html则查找/var/www/about/index.html。

root 指令的作用是设定静态文件查找的基准目录,不是直接指向某个 HTML 文件,而是告诉 Nginx:“所有请求的路径,都从这个目录开始往下找”。
root 的基本写法和生效位置
root 后面跟一个绝对路径(推荐),例如:
root /var/www/my-site;
这个配置可以放在 http、server 或 location 块中。优先级是:location > server > http。也就是说,如果 location 里写了 root,就以它为准;没写才向上继承。
root 怎么拼接出真实文件路径
Nginx 会把客户端请求的 URI(去掉域名和参数后的部分)原样追加到 root 路径末尾,然后去磁盘上查找对应文件。
- 配置:root /data/web;
- 访问
/about/index.html→ 查找/data/web/about/index.html - 访问
/→ 查找/data/web/index.html(前提是启用了index index.html;) - 注意:URI 开头的
/不参与拼接,只取后面的部分
常见配置示例
典型静态站点配置片段:
server {
listen 80;
server_name example.com;
root /srv/www/example; # 整个站点根目录
index index.html;
<pre class="brush:php;toolbar:false;">location /static/ {
root /srv/www/example; # 这里可省略,因已继承自 server 级
}
location /uploads/ {
root /opt/uploads; # 单独为 uploads 指定物理路径
}}
上面最后一段说明:/uploads/ 下的所有请求,实际从 /opt/uploads/uploads/ 开始找——因为 root 是拼接完整 URI 的。
注意事项和易错点
- 路径末尾不加斜杠(
/srv/www/example✅,不是/srv/www/example/❌,虽然多数情况不影响,但保持统一更稳妥) - 确保 Nginx 工作进程(如 www-data 或 nginx 用户)对目标目录有读取权限
- 如果用相对路径(如
root html;),Nginx 会相对于其安装前缀(如/usr/local/nginx)解析,容易出错,不建议 - 要让首页自动加载,必须配合
index指令,否则访问/会返回 403 或 404











