Apache-Httpd
Apache 負載均衡器總是重定向
我在 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/
聽起來您的後端沒有設置
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
.)