Apache2 VHOST加载错误项目 phpmyadmin域名指向异常排查
问题根因
核心配置错误是phpmyadmin_ssl.conf的虚拟主机监听端口配置错误:你为phpMyAdmin写的HTTPS虚拟主机规则,开头写的是<VirtualHost *:80>而非<VirtualHost *:443>,直接导致Apache在443端口(HTTPS默认端口)没有加载任何指向phpMyAdmin的虚拟主机规则。
Apache虚拟主机的匹配逻辑是:先按访问端口匹配对应监听的虚拟主机列表,再在列表里按配置加载顺序匹配和请求域名一致的ServerName/ServerAlias;如果该端口下没有任何匹配当前请求域名的规则,就直接 fallback 到这个端口下第一个被加载的虚拟主机——也就是你配置的test.api.konfigurator.company.de站点,这就是所有访问phpMyAdmin域名的请求都落到test项目的原因。
另外你的phpMyAdmin HTTPS配置里还少了目录访问授权规则,就算端口改对,也可能直接返回403禁止访问。
修复步骤
- 修正phpMyAdmin HTTPS配置
编辑phpmyadmin_ssl.conf,首先把开头的<VirtualHost *:80>改为<VirtualHost *:443>,然后给<Directory>块补上Require all granted授权规则,和test站点的SSL配置对齐,修正后的完整配置如下:
<VirtualHost *:443> ServerName phpmyadmin.aws1.company.de ServerAdmin black@company.de DocumentRoot /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/phpmyadmin_error.log CustomLog ${APACHE_LOG_DIR}/phpmyadmin_access.log combined SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5 SSLCertificateFile "/etc/ssl/certs/company/hoster_cert" SSLCertificateKeyFile "/etc/ssl/certs/company/hoster_key" </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
- 确认站点和模块启用状态
Ubuntu下Apache的虚拟主机配置需要放在/etc/apache2/sites-available/目录下,通过a2ensite命令软链接到sites-enabled目录才会被加载,依次执行以下命令:
# 启用phpMyAdmin的两个站点配置 a2ensite phpmyadmin.conf phpmyadmin_ssl.conf # 确认SSL和rewrite模块已启用 a2enmod ssl rewrite
执行完可以跑apache2ctl -S命令检查当前加载的所有虚拟主机规则,输出里要能看到*:443端口下同时存在两个域名对应的虚拟主机条目,且没有语法报错。
- 重载配置生效
先做配置语法校验,确认无误再重载服务:
# 校验配置语法 apache2ctl configtest # 语法输出Syntax OK再执行重载 systemctl reload apache2
- 访问验证
重载前先清空浏览器缓存(之前配置的HTTP到HTTPS的301跳转很容易被浏览器长期缓存,会影响验证结果),再分别访问两个域名的HTTP、HTTPS地址,就能看到对应项目的测试输出。
后续排查参考
如果按上述步骤操作后仍有异常,直接对照apache2ctl -S的输出逐一核对:
- 确认*:80和*:443端口下都存在
phpmyadmin.aws1.company.de对应的虚拟主机条目,且配置文件路径正确 - 确认
/usr/share/phpmyadmin目录权限对Apache运行用户(Ubuntu默认为www-data)可读 - 确认test站点的配置里没有写全局域名跳转规则,把不属于test域名的请求强制劫持到test目录
内容的提问来源于stack exchange,提问作者Black
相关产品推荐
相关产品推荐

