NetScaler的cookieinsert和sourceip联合保持机制
NetScaler的cookieinsert和sourceip联合保持机制
使用NetScaler的cookieinsert和sourceip联合进行session保持机制即主用cookieinsert方式进行保持,当cookieinsert失效时启用sourceip的保持机制。
客户端访问到NetScaler的某一个vserver,NetScaler接收到第一个request时,使用load balance的算法(比如least connection)进行分发到真实服务器。当服务器返回response给NetScaler时,NetScaler会在这个response的 http头部插入一个cookie,命名为NSC_xxxx。当下一个request中带有这个cookie时,NetScaler就会根据这个 cookie进行session保持。如下是这个cookie的官方说明:
The system inserts the following cookie NSC_XXXX= where
XXXX is the encrypted name of the virtual server serving the request;
ServiceIP is the hexadecimal value of the physical service's IP address;
ServicePort is the hexadecimal value of the physical service's port.
但是在NetScaler版本6.1和8.0关于这个cookie的插入动作有区别,如下:
1, 在NetScaler NS6.1: Build 96上,cookieinsert这个动作是在同一个session的每一个response里都插入的,不管timeout时间设置为多少(包括0);
2, 而在NetScaler NS8.0: Build 53.2上,cookieinsert这个动作当设置时间为0时是在同一个session的第一个response里插入的,后续的不会插入了(可以通过httpwatch查看证明,实际上这个改动在NS7.0就更新了)。但是将cookie的时间设置为非0时,cookieinsert这个动作是在同一个session的每个response里都插入的,因为要告知client进行此cookie的时间更新。
一般最常用的session保持机制就是使用cookieinsert(0mins)为主,sourceip为backup机制。官方是这样说明原理的:
The Backup persistence option is used when the primary configured persistence mechanism on virtual server fails. For example, if the primary persistence is Cookie Insert, the backup persistence can be set to Source IP to handle any client browsers that do not support cookies.
Any client browsers that do not support cookies,这句话值得我们深究。一般我们是认为当NetScaler完成了第一次response插入NSC后紧接着接收到的request中应该带有这个NSC,但是当没有这个NSC时,NetScaler就是用backup机制进行保持。但是实际上这是错误的。NetScaler怎样判断 browser do not support cookies呢?原理如下:
NS接收到下一个request时,会查看这个request的http头中是否存在cookie字段:
■ Cookie字段存在,然后查看是否有NS自己插入的cookie(NSC)
√ 如果存在就根据此NSC进行分发;
√ 如果不存在或者NSC值错误(可能被篡改),就会根据lb的算法进行分发(原来理解为根据backup的方式);
■ Cookie字段不存在,就根据backup的方式进行保持。
当然有些场景不需要我们了解到如此细致,就能够满足应用的需求做到session保持了。但是在某些场景(比如跨域访问,可以参见上篇博文"初识P3P”)就需要非常注意这个操作原理,否则就会出现session保持不了的情况。
报表界面:
配置界面:
NetScaler的cookieinsert和sourceip联合保持机制的更多相关文章
- Sql-Server应用程序的高级注入
本文作者:Chris Anley 翻译: luoluo [luoluonet@hotmail.com] [目 录] [概要] [介绍] [通过错误信息获取信息] [更深入的访问] [xp_cmdshe ...
- WCF中的标准绑定
使用过WCF的童鞋们都很清楚,绑定是必须的.我将这些绑定总结了下. 一.标准绑定简要说明 1.basicHttpBinding 基于WS-I Basic Profile 1.1 的web服务,所需的. ...
- 【MySQl】MyISAM和InnoDB索引对比
部分内容转自:http://www.2cto.com/database/201211/172380.html 比较好的文章:http://www.cnblogs.com/hustcat/archive ...
- 论文阅读笔记三十一:YOLO 9000: Better,Faster,Stronger(CVPR2016)
论文源址:https://arxiv.org/abs/1612.08242 代码:https://github.com/longcw/yolo2-pytorch 摘要 本文提出YOLO9000可以检测 ...
- arcgis api for silverlight 3.1 更新说明
前言: 查看arcgis sl api 老版本帮助的方式:http://resources.arcgis.com/en/help/silverlight-api/3.0/xxxxxxx 新版本的帮助默 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- Spring核心技术(六)——Spring中Bean的生命周期
前文已经描述了Bean的作用域,本文将描述Bean的一些生命周期作用,配置还有Bean的继承. 定制Bean 生命周期回调 开发者通过实现Spring的InitializeingBean和Dispos ...
- 拼接HTML代码在UIWebVIew中显示
其原理:通过网络请求获得相关的信息,再通过手机端进行拼HTML,然后在WebView进行展示,此处还对文章中的图片增加点击效果,可以保存到相册中:文章的样式已经存在项目中,直接去调用: 1:首先了解两 ...
- WCF简要介绍
什么是WCF WCF的全称是:Windows Communication Foundation.从本质上来说,它是一套软件开发包,是微软公司推出的符合SOA思想的技术框架.WCF为程序员提供了丰富的功 ...
随机推荐
- 洛谷P4316 绿豆蛙的归宿(期望)
题意翻译 「Poetize3」 题目背景 随着新版百度空间的上线,Blog宠物绿豆蛙完成了它的使命,去寻找它新的归宿. 题目描述 给出一个有向无环图,起点为1终点为N,每条边都有一个长度,并且从起点出 ...
- Navicat Premium Mac 12 破解
破解地址:https://blog.csdn.net/xhd731568849/article/details/79751188 亲测有效
- 基于LNMP环境的ssh2扩展
openssl: 加密算法集合,C语言实现 libssh2:ssh2协议库库,C语言实现 PECL/ssh2: libssh2的php扩展,允许php程序调用libssh2中的函数 依赖关系:PECL ...
- H5之audio标签放音兼容所有浏览器方法
前端交流群,群文件提供大量文档.书籍和资料.期待你的加入!群号:127768464 由于项目需要,最近刚做了一个网页放音的功能,使用到了H5新标签<audio></audio> ...
- 在ubuntu上安装subline
Sublime Text is a most popular, lightweight and smart cross-platform text and source code editor wit ...
- C# 创建新线程
首先需要包含命名空间 using System.Threading; 然后创建进程 Thread th = new Thread(new ThreadStart(ThreadMethod)); //创 ...
- J.U.C 系列之Atomic原子类
一 什么是原子类? 所谓原子类必然是具有原子性的类,原子性操作--原子操作,百度百科中给的定义如下 "原子操作(atomic operation)是不需要synchronized" ...
- linux ubuntu 现在显示的是ubuntu login
linux ubuntu 现在显示的是ubuntu login 如果要进图形界面,你需要安装桌面管理器sudo apt-get install ubuntu-desktop或sudo apt-get ...
- 为什么工具类App,都要做一个社区?
非著名程序员涩郎 非著名程序员,字耿左直右,号涩郎,爱搞机,爱编程,是爬行在移动互联网中的一名码匠!个人微信号:loonggg,微博:涩郎,专注于移动互联网的开发和研究,本号致力于分享IT技术和程序猿 ...
- 前端初学者——初探Modernizr.js Modernizr.js笔记
什么是Modernizr? Modernizr 是一个用来检测浏览器功能支持情况的 JavaScript 库. 目前,通过检验浏览器对一系列测试的处理情况,Modernizr 可以检测18项 CSS3 ...