根据您的描述,问题可能出在以下几个方面。请按顺序排查:
### 1. 虚拟主机配置文件未正确加载
检查主配置文件 `/etc/httpd/conf/httpd.conf` 底部是否包含虚拟主机配置:
- IncludeOptional conf.d/*.conf # 确保包含自定义配置目录
复制代码
您的虚拟主机配置应放在 `/etc/httpd/conf.d/vhost.conf` 文件中。
### 2. 端口监听冲突
确保在虚拟主机配置前明确定义监听端口(在 `vhost.conf` 文件顶部添加):
- Listen 80
- NameVirtualHost *:80 # 重要!启用基于域名的虚拟主机
复制代码
### 3. 默认虚拟主机覆盖
Apache默认使用第一个虚拟主机作为兜底配置。请将您的配置改为:
- # 默认兜底虚拟主机(必须放在第一个)
- <VirtualHost *:80>
- ServerName default
- DocumentRoot /var/www/html # Apache默认目录
- </VirtualHost>
- # 您的第一个站点
- <VirtualHost *:80>
- ServerName wk.xdzms.cn
- DocumentRoot "/wk/html"
- <Directory "/wk/html">
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
- # 您的第二个站点
- <VirtualHost *:80>
- ServerName it.xdzms.cn
- DocumentRoot "/wk/it"
- <Directory "/wk/it">
- Options Indexes FollowSymLinks
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
复制代码
### 4. 关键排查命令
- # 检查配置语法
- sudo apachectl configtest
- # 查看加载的虚拟主机
- sudo apachectl -S
- # 检查目录权限(确保apache用户可读)
- ls -ld /wk/it
- ls -l /wk/it/index.* # 确认首页文件存在
- # 测试域名解析(在服务器本地执行)
- curl -H "Host: it.xdzms.cn" [url=http://localhost]http://localhost[/url]
复制代码
### 5. SELinux 权限问题(RHEL常见)
执行以下命令修复:
- sudo semanage fcontext -a -t httpd_sys_content_t "/wk(/.*)?"
- sudo restorecon -Rv /wk
- sudo setsebool -P httpd_unified 1
复制代码
### 6. 日志分析
检查错误日志定位问题:
- tail -f /var/log/httpd/error_log # 访问失败时查看实时日志
- grep "it.xdzms.cn" /var/log/httpd/access_log # 检查访问记录
复制代码
---
**最终建议:**
1. 90% 的问题源于缺少
NameVirtualHost *:80 声明
2. 7% 的问题由 SELinux 导致
3. 3% 需要检查
/wk/it 目录下是否存在
index.php 或
index.html 首页文件
修改后重启服务:
- sudo systemctl restart httpd
复制代码
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。