测试基于域名的虚拟主机需三步:DNS/hosts解析生效、Apache正确匹配ServerName、目标目录可访问且权限正确;任一环节缺失将导致404、403或落入默认站点。
测试基于域名的虚拟主机解析是否正确,核心是验证“请求能否按预期域名路由到对应站点”,需分三步走:dns/hosts解析生效、apache识别并匹配servername、目标目录可访问。漏掉任一环都会导致404、403或落到默认站。
确认域名能正确解析到服务器IP
这是前置条件。若域名没指向你的Apache服务器,请求根本不会进来。
- 本地测试用/etc/hosts最简单:在客户端(可以是本机)添加一行,如
192.168.1.100 site1.example.com site2.example.com,保存后执行ping site1.example.com看是否返回该IP - 若用真实DNS,用
dig site1.example.com +short或nslookup site1.example.com查A记录是否为服务器IP - 注意:浏览器缓存和DNS缓存可能干扰,可用
curl -H "Host: site1.example.com" http://192.168.1.100绕过DNS直接测试Apache路由逻辑
验证Apache是否加载并匹配了对应虚拟主机
即使域名解析对了,Apache没读配置或匹配失败,照样不生效。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 运行
httpd -S(CentOS/RHEL)或apache2ctl -S(Ubuntu/Debian),输出中应列出你配置的site1.example.com及其DocumentRoot路径 - 检查主配置是否包含
Include conf/extra/httpd-vhosts.conf且未被注释;若用a2ensite,确认软链接已建在sites-enabled下 - 执行
httpd -t确保语法无误,再systemctl reload httpd重载配置
检查目标站点目录权限与授权是否到位
常见403错误往往不是DNS或配置问题,而是Apache没权限读取目录。
- 确认
DocumentRoot "/var/www/site1"路径真实存在,且index.html在其中 - 在
块内, <directory></directory>必须包含Require all granted(Apache 2.4+必需) - 检查SELinux状态:
getenforce若为Enforcing,临时设为Permissive测试:setenforce 0;长期解决需用chcon -R -t httpd_sys_content_t /var/www/site1 - 用
curl -I http://site1.example.com看响应头是否含200 OK,或curl http://site1.example.com直接看HTML内容

















