root指令的核心作用是定义URI到文件系统的映射基准,需指向前端构建产物父目录(如/var/www/myapp),配合index指定默认页,location中挂载子路径应优先用alias而非root。
Nginx 静态资源独立部署时,root 指令的核心作用是定义 URI 到文件系统的映射基准。配对不当,页面 404、样式丢失、JS 加载失败就全来了。关键不在“怎么写”,而在“怎么想”——它不是路径拼接器,而是请求根起点的声明。
把前端构建产物(如 dist 或 build 目录)整体放到一个清晰、隔离的路径下,例如:
/var/www/myapp/(推荐,避免混用系统默认 /usr/share/nginx/html)/opt/web/myproject/确保该路径下直接存在 index.html、css/、js/ 等子目录——Nginx 不会自动创建中间路径,只负责按规则查找。
在 server{} 内直接配置,不嵌套在 location / {} 中(除非有特殊路由需求):
server {listen 80;server_name example.com;root /var/www/myapp; # ✅ 指向 dist 的父目录,不带末尾斜杠index index.html;# ✅ 默认首页,可追加 index.htmcharset utf-8;}
此时:
GET / → 查找 /var/www/myapp/index.html
GET /assets/main.js → 查找 /var/www/myapp/assets/main.js
如果必须在 location 里挂载额外静态目录(比如单独放图片或上传文件),不要用 root,否则路径会多一层前缀:
# ❌ 错误:请求 /uploads/logo.png → 实际找 /data/uploads/uploads/logo.pnglocation /uploads/ {root /data;}✅ 正确:请求 /uploads/logo.png → 直接映射到 /data/uploads/logo.pnglocation /uploads/ { alias /data/uploads/; }
注意:alias 值末尾必须带斜杠(/data/uploads/),否则匹配失败。
改完配置别急着 reload,四步快速闭环:
nginx -t 检查语法是否合法curl -I http://localhost/ 看状态码和 Content-Typetail -f /var/log/nginx/error.log,重点搜 No such file or directory
www-data)对目标目录有读取权限:chmod 755 /var/www/myapp,文件为 644
路径里别用中文、空格、符号链接;MIME 类型靠 include mime.types 自动识别,一般不用手动干预。