添加或删除或重新加载特定的VirtualHost,而无需重新启动Apache(并且不中断其他VirtualHost的请求)

时间:2018-07-15 09:09:45

标签: apache apache2 virtualhost

上下文:假设我有这个/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的正在进行的请求(长时间下载等)? >

注意:

1 个答案:

答案 0 :(得分:2)

重新启动==停止,然后再启动。

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

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