apache配置多站点需启用httpd-vhosts.conf、设置documentroot与directory权限,并通过复制修改virtualhost块实现;apache 2.4+无需namevirtualhost指令,require all granted为必需权限配置。

Apache 的 httpd.conf 中配置虚拟主机,核心是启用虚拟主机功能、指定站点根目录与权限,并按需区分 IP、端口或域名。实际操作中,不建议把所有虚拟主机直接写在 httpd.conf 里,而是通过模块化方式管理——但若环境简单,直接配也完全可行。
启用虚拟主机支持
确保 httpd.conf 中已加载相关模块和配置文件:
-
找到这一行并取消注释(去掉前面的
#):Include conf/extra/httpd-vhosts.conf
这会引入独立的虚拟主机配置文件,让主配置更清晰。
-
如果你选择不使用
httpd-vhosts.conf,而直接在httpd.conf末尾写虚拟主机,也要确认以下模块已加载(通常默认开启):LoadModule vhost_alias_module modules/mod_vhost_alias.so
-
对于基于域名的虚拟主机(最常用),还需确保启用:
Apache Superset Dashboard and SQL Exploration Skill下载Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
NameVirtualHost *:80
注意:Apache 2.4+ 版本中该指令已被移除,不再需要;只要
<virtualhost></virtualhost>写法正确即可生效。
配置单个基于域名的虚拟主机(推荐方式)
在 httpd.conf 底部或 httpd-vhosts.conf 中添加如下结构:
<virtualhost>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "/var/www/example"
<directory>
Require all granted
AllowOverride All
Options Indexes FollowSymLinks
</directory></virtualhost>
-
ServerName是访问时输入的域名,必须与 DNS 解析一致; -
ServerAlias可设别名(如带 www 的版本); -
DocumentRoot指向网站文件存放路径; -
<directory></directory>块定义该目录的访问权限,Require all granted是 Apache 2.4+ 的写法(旧版用Allow from all)。
配置多个站点(复制+修改即可)
只需复制上面的 <virtualhost></virtualhost> 块,改几个关键项:
-
ServerName(如site2.com) -
DocumentRoot(如"/var/www/site2") -
<directory></directory>路径同步更新
例如:
<virtualhost>
ServerName site2.com
DocumentRoot "/var/www/site2"
<directory>
Require all granted
</directory></virtualhost>
⚠️ 注意:所有
DocumentRoot对应的目录必须真实存在,且 Apache 进程(如www-data或daemon用户)有读取权限;Windows 下路径用正斜杠或双反斜杠,如"D:/www/site1"。
验证与生效
- 修改后执行语法检查(避免重启失败):
httpd -t # Windows 或源码安装 apachectl configtest # Linux 常用
- 无报错再重启服务:
sudo systemctl restart httpd # RHEL/CentOS sudo service apache2 restart # Debian/Ubuntu
不复杂但容易忽略细节










