我有一台带有 2 个 NIC 的 Linux 机器。我安装并配置了 Apache 2 以进行反向代理。
每个 NIC 都有自己的 IP 地址,我想知道是否有任何方法可以根据用于访问该框的 IP 地址通过 Apache 重定向请求。
例如:eth0
有 IP 100.100.100.100
,eth1
有200.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>