必须先完成DNS泛解析、目录权限配置和Host头校验三步,mod_vhost_alias才可动态映射子域;它仅根据Host头拼路径,不处理DNS、证书或权限。
不能直接“开箱即用”配海量子域名,mod_vhost_alias 本身不处理 dns、证书或权限校验,它只做一件事:根据 host 头实时拼出文件路径。要跑通,得先铺好三块地基——dns 泛解析、目录结构与权限、host 头可信校验。
第一步:确保 DNS 已泛解析到服务器 IP
这是前提,否则请求根本到不了你的 Apache:
- 在域名 DNS 管理后台添加一条 * IN A xxx.xxx.xxx.xxx 记录(xxx.xxx.xxx.xxx 替换为你的服务器公网 IP)
- 用 dig test123.example.com 或 nslookup demo.example.com 验证是否返回该 IP
- 若返回空或错误 IP,后续所有配置都无效——浏览器输
http://user.example.com会直连默认虚拟主机,而非动态路由
第二步:启用模块并写最简有效配置
确认模块已加载后,用以下最小配置启动动态映射:
- Debian/Ubuntu 执行:a2enmod vhost_alias && systemctl restart apache2
- CentOS/RHEL 检查
httpd.conf中有:LoadModule vhost_alias_module modules/mod_vhost_alias.so - 在
<VirtualHost>块中加入:
ServerName example.com
ServerAlias *.example.com
UseCanonicalName Off
VirtualDocumentRoot /var/www/%1
<Directory "/var/www">
Require all granted
Options FollowSymLinks
</Directory>
</VirtualHost>
说明:%1 表示 Host 头中第一个点前的部分(alice.example.com → alice),所以需提前建好 /var/www/alice 目录;UseCanonicalName Off 是必须项,否则 Apache 忽略 Host 头,%1 取不到值。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
第三步:处理常见 403/404,盯紧三个细节
配置看似简单,90% 的失败源于环境没对齐:
-
目录权限:Linux 下
www-data(或apache)用户必须对/var/www/alice有 执行(x)权限,否则连进入目录都不行——哪怕文件可读也不行 -
路径拼接无容错:VirtualDocumentRoot 是原样拼接,若用户注册子域名为
my-site,对应目录名也得是my-site;含大写字母(如UserA)则目录名必须大小写一致(Linux 区分大小写) -
HTTPS 要额外准备:mod_vhost_alias 不管证书;必须用通配符证书
*.example.com,且确保 SNI 在客户端支持(现代浏览器均支持)
进阶提示:灵活取段与多级目录
除了 %1,你还能按需拆解 Host 头:
- %2 → 第二段(
blog.example.com中的example) - %-1 → 最右段(
com),%-2 → 倒数第二段(example) - %1.1 → 把第一段再切字(
alice的首字母a),适合按首字母分目录,如/var/www/%1.1/%1→alice.example.com映射到/var/www/a/alice - %0 → 完整 Host 名,适合保留完整域名结构,如
/var/www/%0/htdocs
不复杂但容易忽略。

















