你是否遇到过这样的情况:手里只有一台服务器,却想同时部署个人博客、企业官网、测试项目?Apache的虚拟主机(Virtual Host)功能就是为解决这个问题而生——它能让单台Apache服务器同时响应多个域名的请求,每个域名对应独立的网站目录和配置,资源利用率直接拉满。
一、虚拟主机的三种常见类型
Apache支持三种虚拟主机配置方式,按需选择即可:
- 基于IP:给服务器绑定多个IP,每个IP对应一个网站(需额外IP资源,较少用);
- 基于端口:通过不同端口区分网站(如
http://yourdomain:8080,适合内部测试); - 基于域名:最常用!通过不同域名(如
site1.com和site2.com)指向同一服务器IP,Apache自动匹配对应网站(下文重点讲解这种)。
二、基于域名的虚拟主机配置步骤
以Ubuntu 20.04(Apache 2.4)为例,CentOS等系统仅配置文件路径略有不同,核心逻辑一致:

1. 准备网站目录与测试文件
先给两个测试网站创建独立目录,并写入不同的测试内容(方便后续验证):
# 创建目录
sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html
# 写入测试内容
echo "<h1>Welcome to Site1!</h1>" | sudo tee /var/www/site1.com/public_html/index.html
echo "<h1>Welcome to Site2!</h1>" | sudo tee /var/www/site2.com/public_html/index.html
# 设置目录权限(避免403错误)
sudo chown -R www-data:www-data /var/www/site1.com/public_html
sudo chown -R www-data:www-data /var/www/site2.com/public_html
sudo chmod -R 755 /var/www
2. 配置虚拟主机文件
Apache在Ubuntu中通过/etc/apache2/sites-available/目录管理虚拟主机配置,需为每个网站创建独立的.conf文件:
-
新建
site1.com.conf:sudo nano /etc/apache2/sites-available/site1.com.conf写入以下内容(核心参数已标注):
<VirtualHost *:80> # 网站文件根目录 DocumentRoot /var/www/site1.com/public_html # 主域名 ServerName site1.com # 域名别名(可选,如www.site1.com) ServerAlias www.site1.com # 目录权限配置(解决403问题) <Directory /var/www/site1.com/public_html> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> # 日志文件(可选,方便排查错误) ErrorLog ${APACHE_LOG_DIR}/site1.com_error.log CustomLog ${APACHE_LOG_DIR}/site1.com_access.log combined </VirtualHost> -
同理,新建
site2.com.conf,只需把site1.com替换为site2.com即可。
3. 启用配置并重启Apache
Ubuntu中需用a2ensite命令启用配置(a2dissite用于禁用),然后重启服务:
# 启用两个网站的配置
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
# 检查配置文件语法(避免拼写错误导致重启失败)
sudo apache2ctl -t
# 语法正确则重启Apache
sudo systemctl restart apache2
4. 本地测试(修改hosts文件)
若还未给域名解析到服务器IP,可通过修改本地hosts文件模拟访问(仅本地生效):
- Windows:
C:\Windows\System32\drivers\etc\hosts - Mac/Linux:
/etc/hosts
添加以下内容(将192.168.1.100替换为你的服务器IP):
192.168.1.100 site1.com www.site1.com
192.168.1.100 site2.com www.site2.com
5. 验证结果
打开浏览器,分别访问site1.com和site2.com——若能看到不同的欢迎页面,说明虚拟主机配置成功!
三、避坑小提示
- 防火墙:若服务器开启了防火墙(如UFW),需开放80端口:
sudo ufw allow 80; - SELinux:CentOS系统需关闭SELinux或配置权限(临时关闭:
sudo setenforce 0); - 语法检查:每次修改配置后,务必用
apachectl -t检查语法,避免重启失败。
其实Apache虚拟主机的配置逻辑很简单:用不同的域名(或IP、端口)匹配不同的网站目录。只要跟着步骤走,即使是运维新手也能快速上手。现在,不妨拿自己的服务器练手,让一台机器“变身”多网站主机吧!
文章版权声明:除非注明,否则均为婉秋博客原创文章,转载或复制请以超链接形式并注明出处。