当前位置:首页 > 网络安全 > 正文内容

tengine session_sticky_module模块源码分析和使用

访客3年前 (2021-04-15)网络安全882

前言

nginx以前对session 保持支持不太好,主要采用ip_hash把同一来源的客户(同一C段的IP)固定指向后端的同一台机器,ip_hash有个缺点是不能实现很好的负载均衡;直到nginx的扩展模块nginx-sticky-module的出现,解决了session sticky的问题。

个人感觉tengine的session sticky模块更好一些,于是把tengine的sticky移植到了nginx里。

temgine session_sticky_module模块是一个负载均衡模块,通过cookie实现客户端与后端服务器的会话保持, 在一定条件下可以保证同一个客户端访问的都是同一个后端服务器。

基本参数:

  • cookie设置用来记录会话的cookie名称
  • domain设置cookie作用的域名,默认不设置
  • path设置cookie作用的URL路径,默认不设置
  • maxage设置cookie的生存期,默认不设置,即为session cookie,浏览器关闭即失效

mode设置cookie的模式:

  • insert: 在回复中本模块通过Set-Cookie头直接插入相应名称的cookie
  • rewrite: 使用服务端标识覆盖后端设置的用于session sticky的cookie。如果后端服务在响应头中没有设置该cookie,则认为该请求不需要进行session sticky,使用这种模式,后端服务可以控制哪些请求需要sesstion sticky,哪些请求不需要。

option?设置用于session sticky的cookie的选项,可设置成indirect或direct。indirect不会将session sticky的cookie传送给后端服务,该cookie对后端应用完全透明。direct则与indirect相反。


maxidle设置session cookie的最长空闲的超时时间

  • maxlife设置session cookie的最长生存期
  • fallback设置是否重试其他机器,当sticky的后端机器挂了以后,是否需要尝试其他机器
  • hash设置cookie中server标识是用明文还是使用md5值,默认使用md5


目前控制台只支持两种模式,insert和rewrite模式。

两种模式下,其他的配置都是相同的。

在insert模式下,cookie的值不经过后端,完全由lb进行管理,每个后端的rs生成一个唯一的id值,加上maxidle和maxlife值,用分隔符隔开,用作cookie的value,来进行会话保持,这个条件需要option=indirect和session_sticky_hide_cookie配合。

在rewrite模式下,除了mode改变,其他完全没变,cookie的值由后端rs是否设置来决定。


session_sticky格式补充

第一次请求的时候,因为请求不带cookie值,或者说cookie值本身是错误的,会触发第一次选取rs,并且将cookie值通过response返回

curl -v 127.0.0.3:978

* About to connect() to 127.0.0.3 port 978 (#0)

* Trying 127.0.0.3... connected

* Connected to 127.0.0.3 (127.0.0.3) port 978 (#0)

> GET / HTTP/1.1

> User-Agent: kcurl/1.0 (curl 7.19.7) (x86_64-unknown-linux-gnu) libcurl/7.19.7 OpenSSL/1.0.1e zlib/1.2.3

> Host: 127.0.0.3:978

> Accept: **

> Cookie: LBSID=d349ca31adc862f4d7e6faa19e516d6d|1556447041|1556447041; Path=/

>

< HTTP/1.1 200 OK

< Server: Tengine/2.3.0

< Date: Sun, 28 Apr 2019 10:30:13 GMT

< Content-Type: text/plain

< Content-Length: 3

< Connection: keep-alive

< Set-Cookie: LBSID=d349ca31adc862f4d7e6faa19e516d6d|1556447413|1556447041; Path=/

<

* Connection #0 to host 127.0.0.3 left intact

* Closing connection #0

821

可见,第二次请求带着cookie,返回值更新了,lastseen,并且选定了刚刚的rs(d349ca31adc862f4d7e6faa19e516d6d),并且lastseen也更新了时间戳


max_idle测试

curl 10.10.117.238/ok -v

* About to connect() to 10.10.117.238 port 80 (#0)

* Trying 10.10.117.238...

* Connected to 10.10.117.238 (10.10.117.238) port 80 (#0)

> GET /ok HTTP/1.1

> User-Agent: curl/7.29.0

> Host: 10.10.117.238

> Accept: **

> Cookie: LBSID=10.0.23.20:80|15734169|1571297217; Path=/

>

< HTTP/1.1 200 OK

< Server: LB 1.0.0

< Date: Thu, 17 Oct 2019 07:26:38 GMT

< Content-Type: application/octet-stream

< Content-Length: 2

< Connection: keep-alive

< Set-Cookie: LBSID=10.0.23.20:80|15734169|1571297217; Path=/

<

* Connection #0 to host 10.10.117.238 left intact

ok

max_idle设置为30,在18秒内的请求没有超时,继续使用10.0.234.20:80这个rs。


curl --cookie "LBSID=10.0.234.20:80|1571297198|1571297217; Path=/" 10.10.117.238/ok -v

* About to connect() to 10.10.117.238 port 80 (#0)

* Trying 10.10.117.238...

* Connected to 10.10.117.238 (10.10.117.23) port 80 (#0)

> GET /ok HTTP/1.1

> User-Agent: curl/7.29.0

> Host: 10.10.117.238

> Accept: */*

> Cookie: LBSID=10.0.23.20:80|1571297198|1571297217; Path=/

>

< HTTP/1.1 200 OK

< Server: LB 1.0.0

< Date: Thu, 17 Oct 2019 07:27:47 GMT

< Content-Type: application/octet-stream

< Content-Length: 2

< Connection: keep-alive

< Set-Cookie: LBSID=10.0.23.6:80|1571297198|1571297217; Path=/

<

* Connection #0 to host 10.10.117.238 left intact

ok

一旦超过max_idle,该session失效,重新选择rs,更新lastseen和firstseen

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:http://therlest.com/106028.html

分享给朋友:

“tengine session_sticky_module模块源码分析和使用” 的相关文章

洗米华小三(浅谈米花三笑的微博)

据长江网2021年11月26日23:49:22的最新消息,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全网热议! 据悉,洗米华小三。猜测这是洗米华在暗中帮助着Mandy。挺想看他老婆小三都抛弃他的场面。 1.洗米华小三 m...

黑客追款出款成功再收费「24小时在线的黑客追款」

据公务员期刊网2021年10月14日18:37:49的最新发布,微博网友@ 爆料。 平安夜来临之际,事件,在网上炒得沸沸扬扬,引发全网热议! 据悉,黑客追款出款成功再收费。可能没有机会接触到钱。那时候我就有想过退步。 一、黑客追回网赌40万 首先确保整个无前期费用黑客追款方案是最有效的,在做一件黑客...

创业板投资风险揭示书,创业板风险揭示书

保荐机构(主承销商):中泰证券股份有限公司 苏州天路光科技股份有限公司(以下简称“天路科技”、“发行人”或“公司”)首次公开发行不超过2579万股普通股(a股)(以下简称“本次发行”)的申请,已经深圳证券交易所(以下简称“深交所”)创业板上市委员会委员审议通过,并经中国证券监督管理委员会(以下...

【紧急+重要】勒索病毒解决方案!附:MS17-010补丁下载

  滚动更新:2017年5月13日16:57:22   游侠安全网(良心网站,站长先贴上注意事项和解决方法!防止你看本文的时候就被加密了!   1、本次共计是自动化攻击,利用了Windows的MS17-010。但苹果的MacOS用户不用得意,因为在昨晚之前,我这里得到的好几起勒索攻击案例都是针对...

宝钢价格行情最新报价,宝钢股份2021年10月钢材价格

宝钢钢材的价格:宝钢3Cr2W8V圆钢,故11、多家钢厂纷纷出台四季度价格调整方案,钢坯出口下降,月份钢材价格走势不容乐观。 要全面考虑下.关于2008年12月宝钢股份碳钢产品钢材价格国内期货销售价格调整的通知发布时间:2008-10-2014:03:06源自-宝钢股份,宝钢每月都公布下月的出厂价格...

Webshell安全检测篇(1)-根据流量的检测方法

一、概述 笔者一直在重视webshell的安全剖析,最近就这段时刻的心得体会和咱们做个共享。 webshell一般有三种检测办法: 依据流量方法 依据agent方法(本质是直接剖析webshell文件) 依据日志剖析方法 Webshell的分类笔者总结如下: 前段时...

评论列表

语酌绾痞
2年前 (2022-07-03)

Accept: **> Cookie: LBSID=d349ca31adc862f4d7e6faa19e516d6d|1556447041|1556447041; Path=/>< HTTP/1.1 200 OK< Server: Te

嘻友澉约
2年前 (2022-07-03)

0.117.23) port 80 (#0)> GET /ok HTTP/1.1> User-Agent: curl/7.29.0> Host: 10.10.117.238> A

闹旅闹旅
2年前 (2022-07-03)

ie实现客户端与后端服务器的会话保持, 在一定条件下可以保证同一个客户端访问的都是同一个后端服务器。基本参数:cookie设置用来记录会话的cookie名称domain设

掩吻不矜
2年前 (2022-07-03)

.. connected* Connected to 127.0.0.3 (127.0.0.3) port 978 (#0)> GET / HTTP/1.1> User-Agent: kcurl/1.0 (curl 7.19.7)

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。