Apache-Httpd

Apache 負載均衡器總是重定向

  • April 2, 2019

我在 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/

聽起來您的後端沒有設置jsessionidcookie?如果您的後端本身沒有設置 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.)

引用自:https://unix.stackexchange.com/questions/510081