%BALANCER_WORKER_ROUTE}如何可以为空

我试图用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/ 

(我知道stickysession!= ROUTEID,但这是因为这个问题范围之外的原因)

所以在我的本地开发框中获得

 Set-Cookie ROUTEID=.share1; 

作为响应标题之一,这是我所期望的。

然而在testing环境中,我明白了

  Set-Cookie: ROUTEID=.(null); 

我不知道如何可以(空),我可以做什么来阻止它为空。 下游服务器可以做些什么来阻止ROUTEID被设置? 或者是有一些其他的configuration选项,可以阻止它?

我怀疑你是首先访问/balancer之外的一个URL,并从中获取一个垃圾cookie(因为如果请求中没有使用负载平衡器,环境variables确实是空的)。

尝试在使用平衡器的情况下设置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> 

在这个特殊情况下,这是路由设置,但代理服务器的响应失败。 如果它收到一个HTTP错误,它会给出一个响应,但如果连接被终止,它会给出一个空值。