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?​​ 八成是:

  1. ​配置未生效​​ → sudo systemctl reload apache2restart 有区别!
  2. ​缓存作怪​​ → 用Chrome无痕模式测试,​​别被浏览器缓存骗了​​!
  3. ​模块未启用​​ → sudo a2enmod rewrite 并确认vhost_alias已加载

📢 牢记:​​修改配置后必须 apachectl -t 查语法​​!我曾经因少个引号排查3小时🙃


​终极测试命令​​:

💡 看到 ​​200 OK​​ 才算通关成功!