我正在尝试用mod_proxy_balancer建立一个平衡的集群。
我按照这里中的示例行来设置cookie。我不得不调整它,因为环境不稳定,所以不是每个请求都会返回200段代码。
Header always add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;
<Proxy balancer://cluster>
BalancerMember http://server1.example.com route=share2
BalancerMember http://server2 example.com route=share1
</Proxy>
ProxyPass /balancer balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse /balancer balancer://cluster/(我知道粘滞会话!= ROUTEID,但这是出于这个问题范围之外的原因)
所以在我的本地开发箱里我得到
Set-Cookie ROUTEID=.share1;作为响应头之一,这正是我所期望的。
然而,在测试环境中,我得到了
Set-Cookie: ROUTEID=.(null);我不知道它如何(空),我能做什么来阻止它为空。下游服务器可以做些什么来阻止ROUTEID的设置吗?或者还有其他的配置选项可以阻止它呢?
发布于 2012-07-21 00:27:00
我怀疑您首先访问了/balancer之外的URL,并从它获得了一个垃圾曲奇(因为如果没有用于请求的负载均衡器,环境变量确实为空)。
在使用平衡器的情况下,只需设置cookie:
<Proxy balancer://cluster>
BalancerMember http://server1.example.com route=share2
BalancerMember http://server2 example.com route=share1
</Proxy>
<Location /balancer/>
Header always add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e;
ProxyPass balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse balancer://cluster/
<Location>发布于 2012-07-24 16:32:27
在这种特殊情况下,路由正在设置,但是来自代理服务器的响应失败了。如果接收到HTTP错误,它将给出响应,但如果连接被终止,则为null。
https://serverfault.com/questions/409622
复制相似问题