Apache 反向代理,根据 IP 地址重定向请求

Apache 反向代理,根据 IP 地址重定向请求

我有一台带有 2 个 NIC 的 Linux 机器。我安装并配置了 Apache 2 以进行反向代理。

每个 NIC 都有自己的 IP 地址,我想知道是否有任何方法可以根据用于访问该框的 IP 地址通过 Apache 重定向请求。

例如:eth0有 IP 100.100.100.100eth1200.200.200.200

如果我浏览到,http://100.100.100.100/AppName/App我希望它重定向到1.1.1.1;如果我浏览到,http://200.200.200.200/AppName/App我希望它转到2.2.2.2

目前 Apache 的配置如下

ProxyPass /AppName/App http://1.1.1.1/AppName/App
ProxyPassReverse /AppName/App http://1.1.1.1/AppName/App

因此,任何前往的地方/AppName/App都将被重定向到1.1.1.1

我正在阅读一些内容ProxyHTMLURLMap,但我不知道这是否有帮助。

你知道怎么做吗?谢谢!

答案1

这个设置看起来有点复杂,我不禁想到有更好的方法来完成你想做的事情 - 你可以扩展你的目标,以便我们能够提供更好的解决方案吗?但是,只要你的用户使用 IP 地址作为主机访问网站,这应该可以解决问题:

RewriteCond %{HTTP_HOST} ^100\.100\.100\.100$
RewriteRule ^/AppName/App(.*)$ http://1.1.1.1/AppName/App$1 [P]

RewriteCond %{HTTP_HOST} ^200\.200\.200\.200$
RewriteRule ^/AppName/App(.*)$ http://2.2.2.2/AppName/App$1 [P]

如果不是,或者您需要 30x-mangling ProxyPassReverse,那么您将需要拆分您的虚拟主机:

<VirtualHost 100.100.100.100:80>
    ...
    ProxyPass /AppName/App http://1.1.1.1/AppName/App
    ProxyPassReverse /AppName/App http://1.1.1.1/AppName/App
</VirtualHost>
<VirtualHost 200.200.200.200:80>
    ...
    ProxyPass /AppName/App http://2.2.2.2/AppName/App
    ProxyPassReverse /AppName/App http://2.2.2.2/AppName/App
</VirtualHost>

答案2

只需添加不同的基于 IP 的虚拟主机。

<VirtualHost 100.100.100.100:80>
    ProxyPass setup #1
</VirtualHost>

<VirtualHost 200.200.200.200:80>
    ProxyPass setup #2
</VirtualHost>

相关内容