如何配置多台Nginx代理服务器?如何实现session共享

如何配置多台Nginx代理服务器?如何实现session共享,第1张

如果是同域名,一般是借用sessionid(cookie)。

其实关键问题是session的数据保存的路径问题,在session里,可以设定N个tomcat,设定session保存的介质相同就可以了。 最好,可以考滤用数据库介质。

是基于client cookie做的。

就是把session存在客户端cookie中。

这样可以避免淘宝分布式多台服务器session共享问题。

每次访问服务器,先验证客户端cookie。

数据库或者memcache 共享session

以下为转帖

Weblogic Server对所有的应用程序设置的cookie的路径都是/,这是不是意味着在Weblogic Server中默认的就可以共享 session了呢?然而一个小实验即可证明即使不同的应用程序使用的是同一个session,各个应用程序仍然只能访问自己所设置的那些属性。

对于这样一种结构,在 session机制本身上来解决session共享的问题应该是不可能的了。除了借助于第三方的力量,比如使用文件、数据库、JMS或者客户端 cookie,URL参数或者隐藏字段等手段。

还有一种较为方便的做法,就是把一个应用程序的session放到ServletContext中,这样另外一个应用程序就可以从ServletContext中取得前一个应用程序的引用。示例代码如下,

应用程序A

contextsetAttribute("appA", session);

应用程序B

contextA = contextgetContext("/appA");

HttpSession sessionA = (HttpSession)contextAgetAttribute("appA");

值得注意的是这种用法不可移植,因为根据ServletContext的JavaDoc,应用服务器可以处于安全的原因对于contextgetContext("/appA");返回空值,以上做法在Weblogic Server 81中通过。

那么Weblogic Server为什么要把所有的应用程序的cookie路径都设为/呢?原来是为了SSO,凡是共享这个session的应用程序都可以共享认证的信息。一个简单的实验就可以证明这一点,修改首先登录的那个应用程序的描述符weblogicxml,把cookie路径修改为/appA 访问另外一个应用程序会重新要求登录,即使是反过来,先访问cookie路径为/的应用程序,再访问修改过路径的这个,虽然不再提示登录,但是登录的用户信息也会丢失。注意做这个实验时认证方式应该使用FORM,因为浏览器和web服务器对basic认证方式有其他的处理方式,第二次请求的认证不是通过 session来实现的。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何配置多台Nginx代理服务器?如何实现session共享

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情