我正在尝试在 Apache 中设置一个简单的负载均衡器,如下所示
我的单节点负载均衡器位于内部 IP 192.168.1.3 上,配置如下
<VirtualHost *:80>
ProxyRequests off
ServerName xxx.xxx.xxx.xxx
# this is my external Static IP
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.2
BalancerMember http://192.168.1.3
Require all granted
ProxySet lbmethod=byrequests
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Require host example.org
</Location>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/
</VirtualHost>
我已在路由器上设置将所有 http 请求转发到我的负载均衡器 192.168.1.3
现在,当我尝试在与服务器位于不同网络(例如 xxx.xxx.xxx.xxx)的系统上访问我的应用程序时,我会被重定向到 192.168.1.2 和 192.168.1.3。由于我在不同的网络上,这些重定向毫无意义。我该如何解决这个问题,以便我的设置在从外部 IP 访问时可以正常工作?
答案1
我使用了这个配置,并且运行正常:
ProxyRequests off
<Proxy *>
Order deny,allow
Deny from all
Allow from all
</Proxy>
ProxyTimeout 300
<VirtualHost *:80>
ServerName xxx.xxx.xxx.xxx
ProxyPreserveHost On
<Proxy balancer://myClusterBalancer>
BalancerMember http://192.168.1.2
BalancerMember http://192.168.1.3
ProxySet lbmethod=bytraffic
</Proxy>
ProxyPass / balancer://myClusterBalancer/ nocanon
ProxyPassReverse / balancer://myClusterBalancer/
</VirtualHost>