Apache多站点配置核心是“一个站点一个<VirtualHost>块”,需按域名或端口分别定义独立块,启用vhost模块并Include配置文件,配合ServerName、DocumentRoot和Directory权限控制,经configtest验证后reload生效。

Apache 多站点配置核心是“一个站点一个 <VirtualHost> 块”,靠域名或端口区分,不是在一个块里堆多个目录。
基础结构:必须启用虚拟主机支持
先确保 Apache 主配置(httpd.conf 或 apache2.conf)已加载虚拟主机模块并引入配置文件:
- 确认
LoadModule vhost_alias_module modules/mod_vhost_alias.so已启用(通常默认开启) - 取消注释或添加这一行:
Include conf/extra/httpd-vhosts.conf(Windows)或IncludeOptional sites-enabled/*.conf(Debian/Ubuntu) - 若用独立
httpd-vhosts.conf,需保证它存在且路径正确;若不用,可直接把虚拟主机配置写进主配置末尾
单 IP + 多域名(最常用)
适用于多个网站共用 80/443 端口,靠 Host 头识别。每个站点单独写一个 <VirtualHost *:80>:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
ServerName必填,对应正式访问域名(如www.site-a.com) -
ServerAlias可选,加别名(如site-a.com、www.a.dev) -
DocumentRoot指向该站点根目录(如/var/www/site-a) -
<Directory>块必须配权限,Apache 2.4 起用Require all granted,不是旧版的Allow from all - 示例:
<VirtualHost *:80>
ServerName site-a.com
ServerAlias www.site-a.com
DocumentRoot /var/www/site-a
<Directory /var/www/site-a>
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
单 IP + 多端口(开发/隔离场景)
当不想依赖 DNS 或需逻辑隔离时,用不同端口区分站点:
- 在主配置中显式声明监听端口:
Listen 8000、Listen 8080 - 每个
<VirtualHost>明确绑定端口,如<VirtualHost *:8000> -
ServerName仍要写,但浏览器访问时需带端口(http://site-b.com:8000) - 注意防火墙和 SELinux(Linux)是否放行新端口
管理上百站点:按文件名排序加载
避免配置混乱,推荐拆成独立文件,用三位数字前缀控制加载顺序:
- 创建目录
conf/vhosts/,所有站点配置存为001-main.conf、002-api.conf、099-monitor.conf - 主配置中写:
Include conf/vhosts/*.conf—— Apache 按字母序读取,001最先生效 - 每个文件只含一个或一对(HTTP+HTTPS)
<VirtualHost>,不写全局指令 - 新增站点时,选好编号新建文件;停用时重命名(如加
~前缀)或移出目录即可
验证与重启
改完配置别急着重启:
- Linux:运行
apachectl configtest或apache2ctl configtest检查语法 - Windows:命令行执行
httpd -t - 无报错再重启服务:
systemctl restart apache2或httpd -k restart - 用
apachectl -S查看实际生效的虚拟主机列表和匹配顺序

















