2019独角兽企业重金招聘Python工程师标准>>>
BalancerMember http://127.0.0.1:8080/demo1
BalancerMember http://127.0.0.1:8080/demo2 status=+H
而我是将访问 http://127.0.0.1/demo 的请求进行了转发:
ProxyPass /demo balancer://democluster
ProxyPassReverse /demo balancer://democluster
问题就出在链接后面不一致的path上面了,导致COOKIES无法共享JSESSIONID
demo1服务器把SESSIONID放在在 /demo1 下面
demo2服务器把SESSIONID放在在 /demo2 下面
因此在访问demo的请求中,拿不到任何一个保存的在COOKIES里面的JSESSIONID,所以每次都会分配新的JSESSIONID
解决办法一:统一访问的path和分发的path,都用/demo:
BalancerMember http://127.0.0.1:8080/demo
BalancerMember http://127.0.0.1:8081/demo status=+H
解决方法二:强制设置反向代理后存放COOKIES的path,使用
ProxyPassReverseCookieDomain locahost www.domain.cn #设置COOKIES的存放域名
ProxyPassReverseCookiePath /demo / #将demo反向代理后的COOKIE统一存放在根目录
配置到虚拟服务器中:
ServerAdmin [email protected]
ServerName 127.0.0.1
ProxyPreserveHost On
ProxyRequests Off
ProxyPass /demo balancer://democluster
ProxyPassReverse /demo balancer://democluster
ProxyPassReverseCookiePath /demo /
ErrorLog "logs/test.localhost-error_log"
CustomLog "logs/test.localhost-access_log" common