如何将 apache mod-proxy 服务器设置为从单独的指定服务器服务器内容,以便我可以在不重新启动 apache 的情况下更改从哪个服务器提供内容?
内容服务器将定期更改,要么是为了维护,要么是因为故障。
我有一个不需要在集群中的应用程序,但我希望在主应用程序服务器崩溃时显示网页的静态版本。
我还希望选择更新服务器上的代码库对其进行测试,然后切换旧的实时服务器。
我已经设置了 mod_proxy 使用
ProxyPass / http://appserver.com
ProxyPassReverse / http://appserver.com
这可行,但接缝需要使用不同的设置重新启动才能改变方向。这违背了在实时服务器上使用它的目的。
我还尝试了 mod_balencer,它非常适合故障转移,但需要重新启动 apache 才能将其设置为在备份时提供主应用程序服务器。
ProxyPass / balancer://hotcluster/
<Proxy balancer://hotcluster>
BalancerMember http://dyn:80 loadfactor=1
BalancerMember http://basic:80 status=+H
ProxySet lbmethod=bytraffic
</Proxy>
有没有一种方法可以在不重新启动 apache 的情况下设置当前的应用程序服务器?
您可以使用具有单个值的 RewriteMap 来使用 mod_rewrite:
然后使用此内容创建 /path/to/file/map.txt
一旦 mod_rewrite 检测到您已更改此值,它将自动将请求代理到新服务器。
您可以使用具有不同性能影响的几种 RewriteMap 类型之一:数据库文件、随机文本文件映射,甚至是外部程序——简而言之,您可以使用它们执行各种神秘的魔法。在mod_rewrite 文档中阅读所有相关信息,并自己决定什么是最佳选择。
这应该可以使用 mod_rewrite 来实现。
像这样的东西:
然后只需触摸 dynamic-server-is-down 文件即可切换到静态服务器。
我不认为有一个简单的方法可以做到这一点。但是,如果您希望代理服务器更改为什么不代理到虚拟 IP 或 DNS 别名。这样,如果您需要切换被代理的服务器,您可以重新分配虚拟 IP 或更改别名以指向新服务器。
您可以尝试“重新加载”而不是重新启动。Restart 将停止并启动服务器,reload 只是重新加载配置。