apache 多域名托管通过 servername 和 serveralias 匹配 host 头实现,需配置独立目录、权限、virtualhost 块(含 documentroot、directory 权限)、启用站点、dns 解析及 hosts 测试。

Apache 实现多域名托管,核心是让同一个 IP 地址能响应不同域名的请求,不需要改端口,靠 ServerName 和 ServerAlias 匹配 Host 头。只要 DNS 解析到位、配置结构清晰、权限和模块就绪,就能稳定运行多个网站。
准备网站目录与基础权限
每个域名对应一个独立根目录,路径清晰便于管理:
- 创建目录:如
sudo mkdir -p /var/www/example.com/public_html和/var/www/blog.net/public_html - 放入测试页:用
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html - 设好权限:Apache 进程用户(Ubuntu 是
www-data,CentOS 是apache)必须有读取权,执行:sudo chown -R $USER:www-data /var/www/example.comsudo chmod -R 755 /var/www/example.com
编写基于域名的 VirtualHost 配置
每个站点单独一个 <virtualhost></virtualhost> 块,关键字段不能重复或遗漏:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
ServerName写主域名(如example.com),必须唯一且可被 DNS 解析 -
ServerAlias补充别名(如www.example.com),一行可写多个,空格分隔 -
DocumentRoot指向对应网站的public_html目录 -
<directory></directory>块里加Require all granted(Apache 2.4+)并设AllowOverride All(方便 .htaccess)
示例(保存为 /etc/apache2/sites-available/example.com.conf):
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
Require all granted
AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/example-error.log
CustomLog ${APACHE_LOG_DIR}/example-access.log combined
启用配置并验证生效链路
写完不等于跑起来,三步缺一不可:
- 启用站点:Debian/Ubuntu 执行
sudo a2ensite example.com.conf;CentOS/RHEL 直接把配置放/etc/httpd/conf.d/即可 - 禁用默认站(防冲突):
sudo a2dissite 000-default.conf(Ubuntu) - 语法检查 + 重载:
sudo apache2ctl configtest成功后,再sudo systemctl reload apache2(或httpd)
域名解析与访问调试要点
服务端配好了,客户端也要“认得出来”:
- DNS 层:确保
example.com和www.example.com的 A 记录都指向服务器公网 IP - 本地测试:改
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows),加一行:服务器IP example.com www.example.com - 浏览器访问:
http://example.com(不要带端口),看是否加载对应页面;若失败,查error.log最直接










