[英]Add or remove or reload a specific VirtualHost without restarting Apache (and having other VirtualHosts' requests interrupted)
上下文:假設我有這個/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
正在進行的請求(長時間下載等)?
筆記:
我已經閱讀了如何在不重新啟動 apache 的情況下為站點重新加載 apache 配置,但問題和答案並不准確說明“不重新啟動”Apache 的后果是什么。 我可以“重新加載”Apache2 配置文件而沒有問題嗎? ,我不確定在從客戶端持續 20 分鍾下載的情況下會發生什么。 是等還是不等? 這里的這個問題特別關注添加一個新的 VirtualHost,同時不破壞其他人的請求。
我也准備了許多類似的問題,但這個問題解決了一個精確的特定要求:安裝新的VirtualHost
同時不中斷正在進行的請求,例如長時間下載。
重啟==停止,然后開始。
而是使用apachectl graceful
。 Graceful 讓現有的連接完成,然后在每個子進程被釋放時一個一個地重新啟動它們。 新連接將獲得新配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.