mod_proxy更改而不重新启动

我怎样才能从一个单独的指定服务器设置一个Apache的mod-proxy服务器到服务器的内容,以一种方式,我可以改变哪个服务器来提供内容,而无需重新启动Apache?

内容服务器将定期更改,以进行维护或因故障。

我有一个应用程序不需要在一个集群,但我想有一个主要的应用程序服务器崩溃事件的网页显示的静态版本。

我也想select更新服务器上的代码库testing,然后切换出旧的活动服务器。

我已经build立了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:

 RewriteMap server txt:/path/to/file/map.txt RewriteRule ^/(.*) http://${server:production}/$1 [P,L] 

然后用这个内容创build/path/to/file/map.txt

 # To use a different server, change appserver.com # to eg maintenance.appserver.com production appserver.com 

一旦mod_rewrite检测到你已经改变了这个值,它会自动将请求代理到新的服务器。

您可以使用几种不同性能影响的RewriteMaptypes之一:数据库文件,随机文本文件映射,甚至外部程序 – 总之,您可以使用它们执行各种神秘的魔法。 阅读mod_rewrite文档中的所有内容,并自行决定什么是最好的select。

这应该是可能的使用mod_rewrite。

像这样的东西:

 RewriteEngine on RewriteCond /some/path/dynamic-server-is-down !-f RewriteRule ^/(.*) http://dyn:80/$1 [P] RewriteCond /some/path/dynamic-server-is-down -f RewriteRule ^/(.*) http://static:80/$1 [P] 

然后,只需触摸dynamic服务器是closures文件切换到静态服务器。

我不认为有一个简单的方法来做到这一点。 但是,如果您希望代理服务器更改为什么不代理虚拟IP或DNS别名。 这样,如果您需要将要代理的服务器切换出去,则可以重新分配虚拟IP或将别名更改为指向新服务器。

你可以尝试“重新加载”而不是重新启动。 重新启动将停止并启动服务器,重新加载只是重新加载configuration。