一、session知识
Session是由应用服务器维持的一个服务器端的存储空间,用户在链接服务器时,会由服务器生成一个惟一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。
服务器也经过URL重写的方式来传递SessionID的值,所以不是彻底依赖Cookie。若是客户端Cookie禁用,则服务器能够自动经过重写URL的方式来保存Session的值,而且这个过程对程序员透明。
在后端应用服务器上php.ini 里几个session相关值的,能够进行简单设置
session.use_cookies = 1 #表示 服务端和客户端交互session是经过cookie的方式 默认值
session.name = LXSYM #默认值是PHPSESSID 能够自行定义。好比LXSYM
session.cache_limiter = nocache #此设置确保对每一个请求,在可能提供缓存的版本前,先请求发送到最初的服务器。php
针对session数据推荐使用共享存储,实现方法不少。好比存于多个memcached中,具体会写博文说明,敬请关注~程序员
二、实现haproxy与客户端session一致的方法有:
2.1 用户IP 识别
haroxy 将用户IP通过hash计算后 指定到固定的真实服务器上。
配置指令 balance source (如: balance uri len 100)后端
2.2 cookie 识别
haproxy 将WEB服务端发送给客户端的cookie中插入(或添加前缀)haproxy定义的后端的服务器COOKIE ID。
配置指令例举 cookie SESSION_COOKIE insert indirect nocache
能够使用firebug能够观察到用户的请求头的cookie信息缓存
2.3 session 识别
haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。
配置指令例举 appsession LXSYM len 64 timeout 5h request-learn
注意LXSYM这个值替换成 你的php.ini 里session.name的值。服务器
如有问题能够留言~cookie