admin 管理员组文章数量: 1086019
2024年4月29日发(作者:php数据库搭建)
最近部署基于nginx反向代理实现负载均衡的项目,发现新的nginx已经支持基于
cookie的负载均衡和健康检查,功能上已经非常强大,感觉不逊于haproxy。我在实际
环境的中使用的是taobao的Tengine,下面的内容主要来之Tengine官方文档。
该模块是一个负载均衡模块,通过cookie实现客户端与后端服务器的会话保持,在一
定条件下可以保证同一个客户端访问的都是同一个后端服务器。
Example1
#默认配置:cookie=routemode=insertfallback=on
upstreamfoo{
server192.168.0.1;
server192.168.0.2;
session_sticky;
}
server{
location/{
proxy_passfoo;
}
}
Example2
#insert+indirect模式:
upstreamtest{
session_stickycookie=uiddomain=lback=onpath=/mode=ins
ertoption=indirect;
server127.0.0.1:8080;
}
server{
location/{
#在insert+indirect模式或者prefix模式下需要配置session_sticky_hide_cookie
#这种模式不会将保持会话使用的cookie传给后端服务,让保持会话的cookie对后
端透明
session_sticky_hide_cookieupstream=test;
proxy_passtest;
}
}
指令
语法:
session_sticky[cookie=name][domain=your_domain][path=your_path][maxage=t
ime][mode=insert|rewrite|prefix][option=indirect][maxidle=time][maxlife=time][f
allback=on|off][hash=plain|md5]
默认值:session_stickycookie=routemode=insertfallback=on
上下文:upstream
说明:
本指令可以打开会话保持的功能,下面是具体的参数:
• cookie设置用来记录会话的cookie名称
• domain设置cookie作用的域名,默认不设置
• path设置cookie作用的URL路径,默认不设置
• maxage设置cookie的生存期,默认不设置,即为sessioncookie,浏览器关闭
即失效
• mode设置cookie的模式:
– insert:在回复中本模块通过Set-Cookie头直接插入相应名称的cookie。
– prefix:不会生成新的cookie,但会在响应的cookie值前面加上特定的前缀,当浏
览器带着这个有特定标识的cookie再次请求时,模块在传给后端服务前先删除加入的前
缀,后端服务拿到的还是原来的cookie值,这些动作对后端透明。如:
"Cookie:NAME=SRV~VALUE"。
– rewrite:使用服务端标识覆盖后端设置的用于sessionsticky的cookie。如果后端
服务在响应头中没有设置该cookie,则认为该请求不需要进行sessionsticky,使用这种
模式,后端服务可以控制哪些请求需要sesstionsticky,哪些请求不需要。
• option设置用于sessionsticky的cookie的选项,可设置成indirect或direct。
indirect不会将sessionsticky的cookie传送给后端服务,该cookie对后端应用完全透
明。direct则与indirect相反。
• maxidle设置sessioncookie的最长空闲的超时时间
• maxlife设置sessioncookie的最长生存期
• fallback设置是否重试其他机器,当sticky的后端机器挂了以后,是否需要尝试其
他机器
• hash设置cookie中server标识是用明文还是使用md5值,默认使用md5
语法:session_sticky_hide_cookieupstream=name;
默认值:none
上下文:server,location
说明:
配合proxy_pass指令使用。用于在insert+indirect模式和prefix模式下删除请求
用于sessionsticky的cookie,这样就不会将该cookie传递给后端服务。upstream表
示需要进行操作的upstream名称。
版权声明:本文标题:Tengine的session_sticky模块实现基于cookie的会话保持 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1714350788a676690.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论