添加或删除或重新加载特定的虚拟主机,而无需重新启动Apache(并中断其他虚拟主机的请求)



上下文:假设我有这个/etc/apache2/sites-available/000-default.conf文件(Debian 9,Apache 2.4(:

<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/site1
</VirtualHost>

并且一些客户端当前正在浏览该网站,甚至其中一些客户端正忙于在该网站上下载1GB文件(假设他们正在下载www.example.com/bigfile.zip(。

现在我想添加一个新的VirtualHost,并将000-default.conf文件编辑为(并保存(:

<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/site1
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
DocumentRoot /var/www/html/site2
</VirtualHost>

现在如果我做

service apache2 restart

它将成功启用新网站example2.com,但也会停止来自example.com等客户端的所有正在进行的请求,并且它将中断例如正在进行的下载。

问题:有没有办法添加新的VirtualHost,而不中断其他VirtualHost正在进行的请求(长时间下载等(

注:

  • 我已经阅读了如何在不重新启动apache的情况下为站点重新加载apache配置,但关于"不重新启动"apache的后果,问题和答案并不准确。同样,我可以"重新加载"Apache2配置文件而不出现问题吗?,我不确定在从客户端持续下载20分钟的情况下会发生什么。它会等还是不等?这里的这个问题特别关注添加一个新的VirtualHost,同时不破坏其他人的请求。

  • 我也准备了许多类似的问题,但这一个问题解决了一个确切的特定要求:安装一个新的VirtualHost,同时不中断正在进行的请求,如长时间下载。

Restart==停止,然后启动。

请改用apachectl graceful。Graceful让现有的连接完成,然后在释放每个子进程时逐个重新启动它们。新连接将获得新配置。

请参阅https://httpd.apache.org/docs/2.4/stopping.html#graceful

最新更新