apache 上的新虚拟主机返回默认 vhost,其他时候返回正常内容

apache 上的新虚拟主机返回默认 vhost,其他时候返回正常内容

我的一台 Debian 服务器上出现了一些非常奇怪的行为。当请求 stuff.com(示例)或 stuff.com/image.jpg 时,假设 50% 的时间我会得到正确的响应,另外 50% 的时间我会得到 404,就图像而言,如果我请求的是普通 HTML 文件,我会得到 apache 的默认页面。

这一切都始于我今天早上创建了一个新的虚拟主机,像往常一样配置了 DocumentRoot 和其他所有内容,突然我在刷新之间开始在图像上出现一些 404,有时我会得到 apache 的默认页面。

虚拟主机配置:

<VirtualHost *:80>
       ServerAdmin webmaster@localhost
       ServerName stuff.com
       DocumentRoot /var/www/html/stuff/stuff-test
       <Directory /var/www/html/stuff/stuff-test >

       Options -Indexes +FollowSymLinks
       AllowOverride All
       Require all granted

       </Directory>
       ErrorLog /var/log/apache2/stuff/stuff/error.log
       CustomLog /var/log/apache2/stuff/stuff/access.log combined

</VirtualHost>

默认配置:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

这是一个使用 Symfony 制作的复杂网站,所以我认为它可能与此有关,因此在另一台服务器上安装了它,一切正常。然后我们开始进一步减少可能性,现在文件夹中只有一个 index.html 和一个 image.jpg,但仍然发生同样的事情。

除了使用 service apache2 restart 重新启动 Apache 之外,我们尝试了所有方法,我们通常使用重新加载。

值得注意的是,我们在此服务器上配置了 97 个虚拟主机,我们提高了相关虚拟主机和默认虚拟主机上的所有日志、apache(至 trace8)的级别。

我们还检查了 dmesg、/var/log/messages、/var/log/kern.log 和 /var/log/syslog。

当请求无法到达虚拟主机并转到默认虚拟主机时,任何日志中都不会出现任何有趣的内容。

另一个有趣的事实是,这只发生在新的虚拟主机上,我们尝试创建一堆虚拟主机,结果都相同,但在旧的虚拟主机上(今天之前创建的),一切都运行正常,没有问题。

服务器上没有任何变化(最后一次变化是 12 月 3 日),没有任何软件更新,没有重启,什么都没有。

我们今晚要重启 Apache,不想冒险在白天重启 Apache,然后突然所有网站都瘫痪了。看看会发生什么。

有人知道吗?

我们检查了以下项目(无特殊顺序):

  • 重新启动了 php-fpm,但它是在请求单个文件或 *.html 文件时发生的,所以它不是来自那里。
  • 检查 ulimit 以确保一切正常且没有达到任何限制。 - 搜索了我们能找到的每一个日志文件,这些文件可能指向任何地方,但什么也没找到。

软件版本:Debian:10.2

阿帕奇:Apache/2.4.38(Debian)

PHP:7.2.34(这并不重要)

答案1

解决方案是简单地重新启动 apache。

就像我在这里读到的一样,唯一的解决方案很少是重新启动 apache。

答案2

您应该运行apachectl -S检查虚拟主机的加载顺序并检查虚拟主机是否正确加载。

相关内容