一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx Root 指令相对路径如何配

时间:2026-08-12 12:09:48 编辑:袖梨 来源:一聚教程网

Nginx 的 root 指令必须使用绝对路径,不支持相对路径;写 root ./dist; 或 root html; 会导致 404/403,因其将值作字面拼接且不基于配置文件位置解析,应写如 root /var/www/my-app; 并验证路径存在、含 index.html、权限正确。

Nginx 的 root 指令不支持相对路径,写相对路径(比如 root ./dist;root html;root ../frontend;)一定会出问题——不是配置校验失败,就是访问时返回 404 或 403。

这是因为 root 从不基于配置文件位置、当前工作目录或 Nginx 安装路径去“推算”路径。它只把值当作字面字符串处理;如果没以 / 开头,Nginx 会尝试在自身工作目录(通常是 /var/lib/nginx/usr/local/nginx)下找,而那里几乎肯定没有你的项目文件。

root 必须用绝对路径

直接写完整路径,例如:

  1. root /var/www/my-app;
  2. root /home/deploy/project/dist;
  3. root /opt/frontend/build;

确保这个路径:

  1. 真实存在(用 ls -l /你写的路径 验证);
  2. 包含 index.html(或你 index 指令指定的默认文件);
  3. 对 Nginx 进程用户(如 www-datanginx)有读取权限(drwxr-xr-x 或至少 r-x 目录权限 + r-- 文件权限)。

怎么确认 root 写对了

  1. 运行 sudo nginx -t 检查语法是否合法;
  2. 查看错误日志:tail -f /var/log/nginx/error.log,访问页面时它会明确打印类似

    open() "/var/www/my-app/about.html" failed (2: No such file or directory)

    ——这就是 Nginx 实际查找的路径,一眼就能看出拼接是否正确;

  3. 手动 curl -I http://localhost 或浏览器访问,结合日志交叉验证。

别和 alias 混用逻辑来“绕过”相对路径

有人想用 location / { alias ./dist/; },这是错的:alias 同样要求绝对路径,且 ./dist/ 会被解释为 Nginx 工作目录下的子目录,依然不可靠。alias 也必须写成 alias /home/user/dist/;,末尾 / 不能省。

Windows 系统注意引号

在 Windows 下若路径含空格或盘符,需加英文双引号,例如:

root "C:/my-project/dist";

但依然必须是绝对路径,不能写 root "dist";

不复杂但容易忽略。

热门栏目