解决方案
我们有一个设置可以做到这一点,但它不仅仅包括 apache。后面有一个负载均衡器和两台服务器。两台 Web 服务器都使用 Apache 为网站提供服务,其中一台还有一个额外的虚拟主机,用于提供简单的 HTML 维护页面。负载均衡器有一个虚拟 HTTP 服务,可将请求重定向到真实服务器。该虚拟服务拥有三台真实服务器:两个是实际服务器,第三个是第二个服务器上指向维护页面的虚拟 IP。真实服务器采用具有最小可能权重的第三个加权,并且负载均衡器使用固定加权算法。因此,当真正的网站因任何原因离线时,所有请求都会发送到维护主机,用户会看到带有电话号码的漂亮错误页面。事实上,我使用一个小脚本来检查真实服务器的运行状况,因此一旦出现任何问题迹象就会显示维护页面。
附言。我使用 Load Master 1500 作为负载均衡器。
其他提示
使用自定义配置文件启动 Apache 非常容易。在我的系统上:
httpd -f <config>
我经常将其与 shell 脚本结合使用,并使用一个极其简单的配置作为维护占位符。该脚本只是停止我的常规 Apache,然后启动它。
制作 2 个配置文件并来回交换它们
如果只有一点点文件会发生变化,请将它们与某种预处理器合并,并从一个源生成标准版本和“离线”版本,并在这些版本之间进行交换。
IIRC 无论如何,apache 配置文件都是使用 CPP 构建的
我们也做过类似的事情。我们有一个重定向到我们的主站点页面的index.html。当我们进行维护时,我们运行一个脚本来更改 html 文件中的重定向。然后我们通过cron和viola中的脚本自动维护窗口。
希望有帮助!
不隶属于 StackOverflow