这可能是一个存在的问题(或在网上的某个地方),但我找不到它。
我们希望将我们的用户基础从后端服务器的一个实现缓慢迁移到不同服务器上的新实现。
在后端服务器前面已经有了一个Apache2反向代理。
因此,我们想要将一些源IP范围/子网代理到新的服务器,而将所有其他服务器redirect到原始服务器。 然后添加到代理新服务器的IP范围,直到他们都做。 然后删除旧的服务器。
有人能给我一些指示,这是如何在Apache中完成?
你可以使用mod_rewrite进行代理。 您将不得不根据源IP设置重写条件,并使用[P]标志设置重写规则。 像这样的东西应该工作:
RewriteCond %{REMOTE_ADDR} ^10\.2\. RewriteRule ^/(.*) http://old-app/$1 [P] ProxyPassReverse / http://old-app/ RewriteCond %{REMOTE_ADDR} ^10\.3\. RewriteRule ^/(.*) http://new-app/$1 [P] ProxyPassReverse / http://new-app/
检查http://httpd.apache.org/docs/2.2/rewrite/proxy.html获取更多信息。
对我来说,一个方法就是这样的:
# /etc/httpd/conf/httpd.conf <snip> <If "-R '10.1.0.0/16'"> ProxyPassReverse /app /http://new-app/app </If> <ElseIf "-R '192.168.1.0/24'"> ProxyPassReverse /app /http://new-app/app </ElseIf> <Else> ProxyPassReverse /app /http://old-app/app </Else>
从apache手册