在搭建网站时,常常需要通过单个服务器托管多个域名,以节省资源并集中管理,Apache作为全球使用最广泛的Web服务器软件之一,提供了强大的多域名访问配置功能,即虚拟主机(Virtual Host),本文将详细介绍Apache配置多域名访问的步骤、类型及注意事项,帮助用户高效实现多站点管理。

虚拟主机的基本概念
虚拟主机是一种在同一台服务器上运行多个网站的技术,每个域名拥有独立的根目录、配置和资源,Apache支持基于域名、IP地址和端口的虚拟主机,其中基于域名的虚拟主机最为常用,用户只需访问不同的域名即可访问对应的网站,无需关心服务器的IP或端口。
准备工作
在开始配置前,需确保以下条件已满足:
- 已安装Apache服务器:在Linux系统中可通过
sudo apt install apache2(Ubuntu/Debian)或sudo yum install httpd(CentOS/RHEL)安装;Windows系统可从Apache官网下载安装包。 - 域名解析:将需要绑定的域名解析到服务器的公网IP地址,可通过DNS管理平台(如阿里云、Cloudflare)设置A记录。
- 网站文件准备:为每个域名创建独立的网站根目录,并存放默认页面(如index.html)。
基于域名的虚拟主机配置
基于域名的虚拟主机通过不同的域名区分站点,配置步骤如下:
启用虚拟主机模块
Apache默认已启用虚拟主机模块,但需检查配置文件,在Ubuntu/Debian系统中,编辑/etc/apache2/apache2.conf,确保包含以下内容:
IncludeOptional sites-enabled/*.conf
在CentOS/RHEL系统中,检查/etc/httpd/conf/httpd.conf是否有:

IncludeOptional conf.d/*.conf
创建虚拟主机配置文件
为每个域名创建独立的配置文件,建议放在/etc/apache2/sites-available/(Ubuntu/Debian)或/etc/httpd/conf.d/(CentOS/RHEL)目录下,为域名example.com和test.com分别创建配置文件:
example.com.conf:<VirtualHost *:80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>test.com.conf:<VirtualHost *:80> ServerAdmin admin@test.com ServerName test.com ServerAlias www.test.com DocumentRoot /var/www/test.com ErrorLog ${APACHE_LOG_DIR}/test_error.log CustomLog ${APACHE_LOG_DIR}/test_access.log combined </VirtualHost>参数说明:
ServerName:主域名。ServerAlias:附加域名(如www子域名)。DocumentRoot:网站根目录。ErrorLog/CustomLog:错误日志和访问日志路径。
创建网站根目录并设置权限
sudo mkdir -p /var/www/example.com /var/www/test.com sudo chown -R $USER:$USER /var/www/example.com /var/www/test.com sudo chmod -R 755 /var/www
并在各目录下创建测试文件,例如/var/www/example.com/index.html内容为“Welcome to Example.com”。
启用虚拟主机配置
在Ubuntu/Debian系统中,使用a2ensite命令启用站点:
sudo a2ensite example.com.conf sudo a2ensite test.com.conf
在CentOS/RHEL系统中,直接将配置文件放入/etc/httpd/conf.d/目录即可。

重启Apache服务
sudo systemctl restart apache2 # Ubuntu/Debian sudo systemctl restart httpd # CentOS/RHEL
配置HTTPS(可选)
若需启用HTTPS,需安装SSL证书并修改虚拟主机配置,以Let’s Encrypt免费证书为例:
- 安装certbot:
sudo apt install certbot python3-certbot-apache # Ubuntu/Debian sudo yum install certbot python3-certbot-apache # CentOS/RHEL
- 获取证书并自动配置:
sudo certbot --apache -d example.com -d www.example.com
certbot会自动修改虚拟主机配置,添加443端口监听和SSL相关指令。
测试与验证
- 本地hosts文件测试(若域名未解析):在本地电脑的
C:WindowsSystem32driversetchosts(Windows)或/etc/hosts(Linux)中添加服务器IP与域名的映射,如168.1.100 example.com test.com。 - 浏览器访问:分别访问
http://example.com和http://test.com,确认显示对应网站内容。 - 日志检查:通过查看
/var/log/apache2/access.log(Ubuntu/Debian)或/var/log/httpd/access_log(CentOS/RHEL)确认请求是否正常记录。
常见问题与解决方案
- 访问域名显示默认页面:检查
DocumentRoot路径是否正确,配置文件中的ServerName是否与域名完全匹配。 - 权限问题导致403错误:确保网站目录所有者正确,且权限设置为755(目录)或644(文件)。
- 配置语法错误:使用
sudo apache2ctl configtest(Ubuntu/Debian)或sudo apachectl configtest(CentOS/RHEL)检查语法,并根据错误提示修正。
多域名配置示例表
以下为两个域名的虚拟主机配置对比:
| 参数 | example.com配置 | test.com配置 |
|---|---|---|
| ServerName | example.com | test.com |
| ServerAlias | www.example.com | www.test.com |
| DocumentRoot | /var/www/example.com | /var/www/test.com |
| ErrorLog | ${APACHE_LOG_DIR}/error.log | ${APACHE_LOG_DIR}/test_error.log |
| CustomLog | ${APACHE_LOG_DIR}/access.log | ${APACHE_LOG_DIR}/test_access.log |
通过Apache的虚拟主机功能,用户可以灵活地在一台服务器上托管多个域名,实现资源的合理利用和高效管理,配置过程中需注意域名解析、文件路径权限和配置语法的准确性,并结合HTTPS保障数据传输安全,掌握这一技能,不仅能降低服务器成本,还能为未来扩展网站规模提供便利。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/47553.html




