我在配置Apache2.4使用它的proxy_balancer模块时遇到了困难。我的用例相当直接。请求正在到达apache节点,这个节点应该是负载平衡的集群。这是我的config
<VirtualHost *:80>
ProxyRequests off
ServerName localhost
<Proxy balancer://geocode>
BalancerMember "http://192.168.2.11:8080/ors/status"
BalancerMember "http://192.168.2.35:8080/ors/status"
Require all granted
ProxySet lbmethod=byrequests
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Require all granted
</Location>
ProxyPass /balancer-manager !
ProxyPass "/geocodelb" "balancer://geocode"
ProxyPass "/geocode" "http://192.168.2.35:8080/ors/status"
</VirtualHost>当导航到localhost:80/geocodelb时,我会收到404 Not Found
129.206.205.50 - - [01/Oct/2017:19:39:55 +0000] "GET /geocodelb
HTTP/1.1" 404 164 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12;
rv:56.0) Gecko/20100101 Firefox/56.0"但是localhost:80/geocode的工作原理是:
129.206.205.50 - - [01/Oct/2017:19:40:07 +0000] "GET /geocode HTTP/1.1"
200 757 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:56.0)
Gecko/20100101 Firefox/56.0"( ../status指向tomcat实例并返回一个json对象)
如果我将BalancerMembers的url替换为一些任意的东西--比如google.com --它就能工作。
我也可以联系localhost:80/balancer-manager的平衡器经理并获得正确的信息.如果我没有弄错的话,那就是告诉我一切看起来都很好(见截图)。我在这里错过了什么?

发布于 2017-10-02 07:42:11
此操作不起作用的原因是,平衡器成员必须是服务器的url,没有路径。路径将被添加到ProxyPass指令中,如下面的balancer://orsbackend/ors/geocode。在这里,工作配置:
<VirtualHost *:80>
ProxyRequests off
ServerName localhost
<Proxy balancer://orsbackend>
BalancerMember "http://192.168.2.11:8080"
BalancerMember "http://192.168.2.35:8080"
ProxySet lbmethod=byrequests
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Require all granted
</Location>
ProxyPass /balancer-manager !
ProxyPass "/geocode" "balancer://orsbackend/ors/geocode"
</VirtualHost>https://stackoverflow.com/questions/46516036
复制相似问题