Nginx location中配置绝对路径指以/开头的系统路径,root将URI原样拼接到指定路径后查找文件,alias则直接映射URI到目标目录且末尾必须加/;root可多级继承,优先级location>server>http,alias仅限location块内使用。

在 Nginx 的 location 块中配置绝对路径与根目录,核心是分清两个概念:一是 配置文件里写的路径本身是否为绝对路径,二是 该 location 如何定位请求对应的磁盘文件——这由 root 或 alias 指令决定。
location 中的路径写法必须用绝对路径
Nginx 配置中所有指向文件系统的位置(如日志路径、include 文件、静态资源目录),只要涉及真实磁盘操作,都强烈推荐且通常必须使用以 / 开头的绝对路径。例如:
access_log /var/log/nginx/my-site-access.log;include /etc/nginx/conf.d/*.conf;root /var/www/my-app;
如果误写相对路径(如 root html; 或 log /logs/app.log;),Nginx 会以它的 --prefix 编译目录(通常是 /usr/local/nginx 或 /etc/nginx)为基准拼接,极易出错或权限失败,不建议依赖。
用 root 指令指定静态资源根目录
root 放在 location 块内时,表示该 location 下所有请求的“基础目录”,Nginx 会把请求 URI(去掉域名和查询参数后剩余部分)原样追加到 root 路径末尾去查找文件。
例如:
- 配置:
location /static/ { root /opt/assets; } - 访问
/static/js/app.js→ 实际查找/opt/assets/static/js/app.js - 访问
/static/→ 查找/opt/assets/static/index.html(需配合index index.html;)
注意:root 后的路径是“上级目录”,URI 中的匹配前缀(这里是 /static/)仍保留在拼接路径中。
用 alias 指令做精准路径映射
当希望某个 location 的 URI 直接对应到一个具体目录(跳过重复路径段),就该用 alias:
- 配置:
location /img/ { alias /var/www/images/; } - 访问
/img/logo.png→ 实际查找/var/www/images/logo.png - 访问
/img/→ 查找/var/www/images/index.html
关键规则:
-
alias后路径末尾必须带/ -
alias只能在location块中使用 -
alias和root不能混用于同一 location
优先级与继承关系要明确
root 可出现在 http、server、location 任意层级,生效顺序是:location > server > http。也就是说:
- 如果
location /api/内写了root /srv/backend;,那它就只管这个 location - 如果没写,则向上找
server块里的root;再没有就用http块默认的root html;
这种继承机制让配置更灵活,但也容易因遗漏导致 404 —— 推荐在每个关键 location 中显式声明 root 或 alias,避免隐式依赖。


















