我在 Apache 2.4.6 (CentOS) 中设置了 LoadBalancer,除了一件事之外,它运行良好。
当用户打开 Apache 服务器的别名时,当用户单击网站上的某个位置时,它随时会将用户重定向到另一台服务器,这对我来说不太好。我想这样设置 Apache:
如果有人打开页面(并且 Apache 从一台服务器加载网页),如果他/她点击网站上的某个位置,则留在此处,并且不会重定向到另一台服务器。
我怎样才能以这种方式配置Apache?
当前配置如下:
<Proxy balancer://mycluster>
BalancerMember https://server1:443
BalancerMember https://server2:443
Require all granted
ProxySet lbmethod=bytraffic
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Require host example.org
</Location>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/
我也尝试了这个配置,但仍然没有按预期工作:
ProxyPass "/test" "balancer://mycluster" stickysession=JSESSIONID|jsessionid scolonpathdelim=On
<Proxy "balancer://mycluster">
BalancerMember "https://server1:443" route=node1
BalancerMember "https://server2:443" route=node2
Require all granted
</Proxy>
<Location /balancer-manager>
SetHandler balancer-manager
Require host example.org
</Location>
ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/
答案1
听起来你的后端没有设置jsessionid
cookie?文档如果您的后端本身没有设置cookie,建议从以下示例开始:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy "balancer://mycluster">
BalancerMember "http://192.168.1.50:80" route=1
BalancerMember "http://192.168.1.51:80" route=2
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass "/test" "balancer://mycluster"
ProxyPassReverse "/test" "balancer://mycluster"
(注意明确的Header add Set-Cookie
。)