上下文:假设我有这个/etc/apache2/sites-available/000-default.conf
文件(Debian 9,Apache 2.4):
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html/site1
</VirtualHost>
并且有些客户当前正在浏览该网站,甚至有些客户正忙于在该网站上下载1 GB的文件(例如,他们正在下载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
的正在进行的请求(长时间下载等)? >
注意:
我已经读过How to reload apache configuration for a site without restarting apache,但是关于“不重新启动” Apache的后果是不确切的问题。与Can I “reload” Apache2 configuration file without issues?相同,我不确定从客户端持续下载20分钟会发生什么情况。是否会等待?这里的问题专门针对添加新的VirtualHost而不中断其他人的请求。
我也已经准备好许多类似的问题,但这是一个精确的特定要求:安装新的VirtualHost
而不中断正在进行的请求,例如长下载。
答案 0 :(得分:2)
重新启动==停止,然后再启动。
请改为使用apachectl graceful
。 Graceful让现有连接完成,然后在释放每个子进程时一一重启。新的连接将获得新的配置。