Apache /使用JSESSIONID定义粘性

MIDE11

我尝试在Apache中定义粘性。这是proxy.conf中的定义:

<Proxy balancer://fs1>
    BalancerMember https://localhost:5006/doc route=node1
    BalancerMember https://localhost:5008/doc route=node2
    ProxySet stickysession=JSESSIONID|jsessionid
</Proxy>
ProxyPass /doc balancer://fs1

要么:

ProxyPass "/doc " "balancer://fs1" stickysession=JSESSIONID|jsessionid scolonpathdelim=On
<Proxy balancer://fs1>
    BalancerMember https://localhost:5006/doc route=node1
    BalancerMember https://localhost:5008/doc route=node2
</Proxy>

我尝试使用url查询参数来实现粘性(因为我了解不建议您覆盖cookie)。如Apache文档中所述:

实现粘性的第二种方法是URL编码。Web服务器在请求的URL中搜索查询参数。使用stickysession再次指定参数的名称。该参数的值用于查找路由等于该值的成员worker。由于提取和处理响应中包含的所有URL链接并不容易,因此通常将参数添加到每个链接的工作是由后端生成内容来完成的。在某些情况下,使用mod_substitute或mod_sed通过Web服务器执行此操作可能是可行的。但是,这可能会对性能产生负面影响。

我在邮递员中发送了10次以下请求:

https://{{myserver}}/doc?jsessionid=node1

我注意到请求已传递到node1(5个请求)和node2(也传递到5个请求)。但是我定义了stickysession,因此它应该选择node1,并每次都转到该节点。

我的目标是客户端将发送请求https://{{myserver}}/doc?jsessionid=nodeX,并且请求将传递给nodeX不使用cookie ..,仅使用粘性是URL编码)。

例如,客户端发送请求https://{{myserver}}/doc?jsessionid=node110次​​。每10次请求将由送达https://localhost:5006

我做错了什么?

雅各布·玛格森

经过一番搜索,我发现了问题所在。为了通过URL请求参数进行路由,您必须包含“。” 在“ node1”之前,如下所示:

https://{{myserver}}/doc?jsessionid=.node1

这篇博客文章为我指明了正确的方向:

路由必须由字母数字前缀,点和数字命名,这一点非常重要。例如:server.1,t.2等。mod_proxy_balancer代码使用点将此路由名称分割,并将第二个值用作路由号。因此,s.1会指向“ route = 1” http://hkrishnan.in/2013/10/14/debugging-apache-mod_proxy_balancer/

我自己对此进行了测试,效果很好!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章