apache基于域名的虚拟主机通过host头路由请求,需启用虚拟主机模块、创建网站目录并设权限、编写virtualhost配置、启用并重载服务,最后修改hosts测试。

Apache 配置基于域名的虚拟主机,核心是让同一台服务器用同一个 IP 和端口(比如 80)响应多个不同域名的请求。关键在于 Apache 能根据 HTTP 请求头里的 Host 字段,把流量准确路由到对应网站目录。操作不复杂,但几个环节必须连贯、无遗漏。
确认并启用虚拟主机支持
Apache 默认可能没开启虚拟主机功能,需手动激活配置入口:
- 打开主配置文件:/etc/apache2/apache2.conf(Ubuntu/Debian)或 /etc/httpd/conf/httpd.conf(CentOS/RHEL)
- 查找类似
Include conf/extra/httpd-vhosts.conf或IncludeOptional sites-enabled/*.conf的行,去掉前面的#取消注释 - 确认已声明监听端口,例如存在
Listen 80;若要用 HTTPS,还需确保Listen 443和mod_ssl已启用 - 执行
sudo apache2ctl -t(Debian系)或sudo httpd -t(RHEL系)验证语法,输出 Syntax OK 才继续
创建网站目录并设好权限
每个域名必须对应一个独立的物理路径,且 Apache 进程(如 www-data 或 apache 用户)要有读取和执行权限,否则会报 403 错误:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 新建目录,例如:
sudo mkdir -p /var/www/example.com/public_html - 放入测试页:
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html - 设置归属与权限(Linux/macOS):
sudo chown -R $USER:www-data /var/www/example.com/public_htmlsudo chmod -R 755 /var/www/example.com
编写虚拟主机配置文件
在 /etc/apache2/sites-available/example.com.conf(Debian系)或 /etc/httpd/conf.d/vhosts.conf(RHEL系)中写入以下内容:
<virtualhost>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<directory>
Require all granted
AllowOverride All
</directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</virtualhost>
注意替换 example.com 为你实际使用的域名,并确保 DocumentRoot 路径与上一步创建的一致。
启用配置并生效
配置写完后不能直接生效,需显式启用并重载服务:
- Debian/Ubuntu:运行
sudo a2ensite example.com.conf启用站点,再执行sudo systemctl reload apache2 - CentOS/RHEL:确保配置文件已保存,然后运行
sudo systemctl reload httpd - 本地测试时,可在
/etc/hosts文件末尾添加:127.0.0.1 example.com www.example.com - 浏览器访问
http://example.com,看到测试页面即表示成功










