Nginx 子域名如何统一指向同一根文件夹(主域名为Shopify场景)
多子域名共用Nginx同一根目录配置流程
核心逻辑说明
Nginx 本身没有“访问子域名自动查找同名独立目录”的默认行为,这类异常表现通常是之前的配置中通过$host变量动态拼接了站点根路径,导致每个域名请求都会匹配到对应名称的文件夹。只要统一通过server块匹配规则锁定固定路径,即可实现三个子域名指向同一根目录的效果,且不会与Shopify托管的主域名产生冲突。
具体配置步骤
- 定位Nginx现有配置文件,通常存放在
/etc/nginx/conf.d/或/etc/nginx/sites-available/目录下 - 新建或编辑一个统一的站点配置块,将三个子域名全部加入
server_name匹配列表,指定固定的根目录绝对路径,参考配置示例:
server { # 替换为你实际使用的三个子域名 server_name sub1.mydomain.com sub2.mydomain.com sub3.mydomain.com; # 替换为服务器上唯一主根文件夹的绝对路径 root /data/web/main_root; index index.html index.htm; location / { try_files $uri $uri/ =404; } }
- 清理冗余的干扰配置:
- 删除所有通过
$host、$http_host变量动态拼接root路径的配置行 - 删除此前为三个子域名单独创建的独立
server块,避免配置优先级冲突 - 由于主域名解析指向Shopify,无请求到达当前Nginx服务器,无需在配置中添加主域名的匹配规则
- 删除所有通过
配置生效校验
- 执行配置语法校验命令:
nginx -t,确认输出无语法错误 - 执行Nginx重载命令:
systemctl reload nginx,让新配置即时生效
常见排查点
- 确认Nginx运行用户(通常为nginx或www-data)对统一根文件夹拥有读取权限,避免出现403访问错误
- 如果子域名已配置HTTPS证书,将证书路径、HTTP强制跳转HTTPS的规则全部写入上述统一的server块即可,无需为每个域名单独配置
- 可通过本地修改hosts文件的方式,将三个子域名指向服务器IP,逐一测试访问内容是否与统一根目录下的文件一致
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

