Apache添加虚拟主机后无法访问?三步排查+配置详解
? 你是否刚配置完Apache虚拟主机,却只能看到冷冰冰的 *** ? 作为运维 *** ,我见过太多新手卡在这一步!别急,今天用实战经验带你拆解「Apache添加虚拟主机后 *** 」的终极解决方案?
? 一、先做这三步基础排查(90%问题可解决)
1. 检查主机名解析
⚠️ 本地测试必须配hosts文件,云服务器确保DNS解析生效!
2. 验证Apache配置语法
语法错误是常见杀手!比如少了</VirtualHost>闭合标签?
3. 检查端口监听
若端口被Nginx占用? sudo systemctl stop nginx
? 二、虚拟主机核心配置深度优化
▍必须包含的6个参数(少1个都可能失败!):
? 重点:
- 老版本用
Order allow,deny,Apache 2.4+必须换Require语句 - 目录路径结尾不能加斜杠!如
/var/www/site/❌ →/var/www/site✅
⚡ 三、高阶问题突破:SELinux与防火墙
▍SELinux拦截对策(CentOS/RedHat专属坑)
个人踩坑经验:
? 生产环境别直接关SELinux!用audit2allow生成策略包才是正道!
▍防火墙放行策略
云服务器还需在安全组开放80/443端口!
? 多站点配置对比表(避坑指南)
| 场景 | 正确操作 | 典型错误 |
|---|---|---|
| 本地测试 | 修改hosts文件 + 重启网络 | 只配Apache不配DNS解析 |
| 目录权限 | chmod 755 + chown apache:apache | 目录权限777 ❗ |
| 多站点共存 | 每个站点独立<VirtualHost>块 | ServerName重复冲突 |
| 非80端口 | 监听端口+防火墙双开 | 仅改Apache忽略防火墙 |
? 独家避坑锦囊(运维7年血泪总结)
为什么按教程配了还是404? 八成是:
- 配置未生效 →
sudo systemctl reload apache2和restart有区别! - 缓存作怪 → 用Chrome无痕模式测试,别被浏览器缓存骗了!
- 模块未启用 →
sudo a2enmod rewrite并确认vhost_alias已加载
? 牢记:修改配置后必须
apachectl -t查语法!我曾经因少个引号排查3小时?
终极测试命令:
? 看到 200 OK 才算通关成功!