Apache 反向代理将不同的源 IP 范围转发到不同的目标 URL

Apache 反向代理将不同的源 IP 范围转发到不同的目标 URL

可能存在有关此问题的问题(或网络上某处有指南),但我找不到它。

我们希望慢慢地将我们的用户群从后端服务器的一种实现迁移到不同服务器上的新实现。

后端服务器前面已经有一个 Apache2 反向代理。

因此,我们希望将一些源 IP 范围/子网代理到新服务器,而将所有其他 IP 范围/子网重定向到原始服务器。然后添加代理到新服务器的 IP 范围,直到所有 IP 范围都代理到新服务器。然后删除旧服务器。

有人可以指点我如何在 Apache 中完成这一操作吗?

答案1

您可以使用 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了解更多信息。

答案2

对我来说,方法可能是这样的:

# /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 手册

相关内容