目前关于nginx做proxy的会话保持功能实现有2种方法:
一、ip_hash
可以实现回话保持,但是需要加max_fails=0;防止当机后服务不能跳转的问题。
upstream cluster {
ip_hash;
server xxx.xxx.xxx.xxx:80 max_fails=0;
}
经过实地测试,发现max_fails=0,不用添加。这个设置的意思是关闭了nginx的健康检查。在不关闭的情况下,也就是默认取1时,某节点宕机,服务自动跳转到其他节点,完全没有影响。
二、第三方模块 nginx_upstream_jvm_route
1.For resin
upstream backend {
server 192.168.0.100 srun_id=a;
server 192.168.0.101 srun_id=b;
server 192.168.0.102 srun_id=c;
server 192.168.0.103 srun_id=d;
jvm_route $cookie_JSESSIONID|sessionid;
}
2.For tomcat
upstream backend {
server 192.168.0.100 srun_id=a;
server 192.168.0.101 srun_id=b;
server 192.168.0.102 srun_id=c;
server 192.168.0.103 srun_id=d;
jvm_route $cookie_JSESSIONID|sessionid reverse;
}
第二种方法从网上搜索文档很多。