最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Apache 中 VirtualHost 如何配置与管理
时间:2026-08-17 19:03:49 编辑:袖梨 来源:一聚教程网
Apache VirtualHost 配置核心是通过域名、IP或端口区分多站点,需启用主配置中的Include指令、设置正确目录权限、编写含ServerName/DocumentRoot/Directory权限的虚拟主机块,并启用配置后重启服务。
Apache 中 VirtualHost 的配置与管理,核心是让一台服务器响应多个域名(或 IP、端口),每个站点拥有独立的根目录、日志和权限控制。关键不在堆参数,而在结构清晰、权限到位、启用正确。
确认主配置已启用虚拟主机支持
Apache 不会自动读取 VirtualHost 块,必须显式启用相关配置文件。常见操作包括:
- 打开主配置文件(如
/etc/apache2/apache2.conf或/etc/httpd/conf/httpd.conf) - 查找类似
Include conf/extra/httpd-vhosts.conf或IncludeOptional sites-enabled/*.conf的行,去掉前面的#取消注释 - 确保已声明监听端口,例如
Listen 80(HTTP)或Listen 443(HTTPS) - 执行
sudo apache2ctl -t(Debian/Ubuntu)或sudo httpd -t(CentOS/RHEL)验证语法,输出 Syntax OK 才继续
为每个站点创建独立目录并设好权限
目录路径要明确,Apache 进程(通常是 www-data 或 apache 用户)必须能读取和进入目录,否则返回 403 错误。
- 创建站点目录,例如:
sudo mkdir -p /var/www/site-a.com/public_html - 放入测试页面:
echo "<h1>Site A</h1>" > /var/www/site-a.com/public_html/index.html - 设置所有权(Linux/macOS):
sudo chown -R $USER:www-data /var/www/site-a.com - 设置基础权限:
sudo chmod -R 755 /var/www/site-a.com
编写 VirtualHost 配置(推荐基于域名)
这是最常用的方式,同一 IP 和端口靠请求头中的 Host 字段区分站点。配置需包含三部分:基本定义、目录权限、日志(可选但建议)。
- 在
/etc/apache2/sites-available/site-a.com.conf(Debian/Ubuntu)或/etc/httpd/conf/extra/httpd-vhosts.conf(CentOS)中写入:
ServerName site-a.com
ServerAlias www.site-a.com
DocumentRoot "/var/www/site-a.com/public_html"
<Directory "/var/www/site-a.com/public_html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site-a_error.log
CustomLog ${APACHE_LOG_DIR}/site-a_access.log combined
</VirtualHost>
-
ServerAlias可写多个,用空格分隔;AllowOverride All启用 .htaccess 支持;Require all granted是 Apache 2.4+ 的必需权限指令
启用并验证配置
写完不等于生效,还需启用并重启服务。
- Debian/Ubuntu 系统:
sudo a2ensite site-a.com.conf(自动创建符号链接到sites-enabled) - CentOS/RHEL 系统:直接把配置写进
httpd-vhosts.conf或单独文件后,确保它被主配置Include到即可 - 重启服务:
sudo systemctl restart apache2(或httpd) - 本地测试时,在
/etc/hosts添加:127.0.0.1 site-a.com,然后浏览器访问http://site-a.com