You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx 配置子路径访问静态文件时如何避免根目录自动拼接子路径

[更新/注意:以下描述中的“subdomain”实际指代URL中的subpath(子路径),给您造成混淆十分抱歉,我已修改标题但保留了原有描述内容。]

问题原因

该现象是Nginx的root指令的路径拼接逻辑导致的:root会将完整的请求路径拼接到指定的根目录之后,所以你请求/subdomain/index.html时,Nginx会自动拼接为/www/mydirectory/subdomain/index.html,和你的预期不符。

解决方案

方案1:使用alias指令(推荐常规场景使用)

alias指令会直接替换location匹配的路径部分,不会拼接多余的子路径层级,配置如下:

location /subdomain/ {
    alias /www/mydirectory/;
    index  index.html;
    client_max_body_size 10g;
}

注意:alias指定的目录末尾必须加斜杠,否则会出现路径解析错误。配置生效后,访问https://mydomain/subdomain/xxx.html会直接返回/www/mydirectory/xxx.html的内容。

方案2:使用rewrite规则(适合存在嵌套location等特殊场景)

如果你有特殊场景无法使用alias,可以通过rewrite重写请求路径实现同等效果:

location /subdomain/ {
    root /www/mydirectory;
    rewrite ^/subdomain/(.*)$ /$1 break;
    index  index.html;
    client_max_body_size 10g;
}

该规则会将/subdomain/开头的请求路径中的子路径前缀去掉,再用root规则解析,同样能直接读取/www/mydirectory下的文件。

内容的提问来源于stack exchange,提问作者Stefan Springer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:36:02