最清晰可靠的做法是在server块顶部配置绝对路径的root指令,如root /var/www/example;,nginx将请求uri(去开头/后)原样拼接到该路径末尾查找文件,需确保目录真实存在、权限正确且末尾不加斜杠。

直接在 server 块顶部写 root 指令,是最清晰、最可靠的做法。它明确声明该站点所有请求的 URI 都从这个目录开始查找文件,而不是去“猜”或拼凑路径。
选对位置:优先放在 server 块里
每个 server 块代表一个独立站点(比如不同域名或端口),在这里配 root,能天然隔离资源,避免干扰:
-
server_name example.com;→root /var/www/example; -
server_name api.site.org;→root /var/www/api; - 请求
/about.html,Nginx 就去找/var/www/example/about.html
路径必须是绝对路径,末尾不加斜杠
root 的值必须以 / 开头,且结尾不能带 /:
- ✅ 正确:
root /var/www/myapp;或root "/opt/my app";(含空格时用双引号) - ❌ 错误:
root /var/www/myapp/;(多余斜杠可能引发索引歧义或权限问题) - 相对路径(如
root html;)仅用于极简测试,生产环境务必用绝对路径
确保目录结构与请求 URI 匹配
root 不是“替换”,而是“拼接”——Nginx 把完整请求路径(去掉开头 / 后)原样加到 root 路径末尾:
- 配置:
root /var/www/html; - 请求:
/css/main.css→ 查找:/var/www/html/css/main.css - 请求:
/→ 查找:/var/www/html/index.html(依赖index index.html;) - 所以
/var/www/html/下必须真实存在css/目录和index.html文件
权限和构建产物要到位
物理路径得真实存在,且 Nginx 工作用户(如 www-data 或 nginx)有读取和执行(x)权限:
- 推荐部署路径:
/var/www/myapp/(避免混用系统默认的/usr/share/nginx/html) - 前端构建产物(如
dist/内容)应整体复制进去,保证index.html、js/、css/等同级存在 - 检查命令:
ls -ld /var/www/myapp和ls -l /var/www/myapp,确认权限和内容无误











