Heim  >  Artikel  >  Backend-Entwicklung  >  session共享

session共享

WBOY
WBOYOriginal
2016-07-30 13:30:091208Durchsuche
由于tomcat的并发数瓶颈问题,可以说使用tomcat的web应用,几乎都存在session不同步问题。借鉴网上的资料,我也找时间实验一把。文中涉及的软件下载和安装,一一略过,想必大家也没必要看。注:本文不对memcached和redis做任何口水讨论,望各个网友自行问谷歌和度娘。(个人愚见,它们作为一个软件,能获得各自众多支持者,想必它们自然有各自的优点,重点还是从实际需要出发,选择合适自己的东东。)一、nginx+tomcat+memcached  (依赖包下载)

1.memcached配置:(v1.4.13)

节点1(192.168.159.131:11444)

节点2(192.168.159.131:11333)

2.tomcat配置

tomcat1(192.168.159.128:8081)

tomcat2(192.168.159.128:8082)

3.nginx安装在192.168.159.131。

       首先,是配置tomcat,使其将session保存到memcached上。有两种方法:

方法一:在server.xml中配置。

找到host节点,加入

 

方法二:在context.xml中配置。

找到Context节点,加入

       其次,配置nginx,用于测试session保持共享。upstream  xxy.com  {       server   192.168.159.128:8081 ;       server   192.168.159.128:8082 ; } log_format  www_xy_com  '$remote_addr - $remote_user [$time_local] $request '                '"$status" $body_bytes_sent "$http_referer"'                 '"$http_user_agent" "$http_x_forwarded_for"'; server {       listen  80;       server_name  xxy.com;       location / {                proxy_pass        http://xxy.com;                proxy_set_header   Host             $host;                proxy_set_header   X-Real-IP        $remote_addr;                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;       }       access_log  /data/base_files/logs/www.xy.log  www_xy_com; }

最后,将你的应用放到两个tomcat中,并依次启动memcached、tomcat、nginx。访问你的nginx,可以发现两个tomcat中的session可以保持共享了。

二、nginx+tomcat+redis   (依赖包下载)

1.redis配置(192.168.159.131:16300)(v2.8.3)

2.tomcat配置

tomcat1(192.168.159.130:8081)

tomcat2(192.168.159.130:8082)

3.nginx安装在192.168.159.131。

       首先,是配置tomcat,使其将session保存到redis上。有两种方法,也是在server.xml或context.xml中配置,不同的是memcached只需要添加一个manager标签,而redis需要增加的内容如下:(注意:valve标签一定要在manager前面。

其次,配置nginx,用于测试session保持共享。

upstream  redis.xxy.com  {       server   192.168.159.130:8081;       server   192.168.159.130:8082; } log_format  www_xy_com  '$remote_addr - $remote_user [$time_local] $request '                '"$status" $body_bytes_sent "$http_referer"'                 '"$http_user_agent" "$http_x_forwarded_for"'; server {       listen  80;       server_name redis.xxy.com;        location / {                proxy_pass        http://redis.xxy.com;                proxy_set_header   Host             $host;                proxy_set_header   X-Real-IP        $remote_addr;                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;       }       access_log  /data/base_files/logs/redis.xxy.log  www_xy_com; }

最后,将你的应用放到两个tomcat中,并依次启动redis、tomcat、nginx。访问你的nginx,可以发现两个tomcat中的session可以保持共享了。

上面文章中,有一点需要说明的是:如果tomcat配置中,将manager放在server.xml中,那么使用maven做热部署时,会发生失败。所以,本人推荐放在context.xml中。

以上就介绍了session共享,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn