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 才算通关成功!