专栏首页编程之路Nginx tomcat8.5集群 与 redis session 共享

Nginx tomcat8.5集群 与 redis session 共享

(一) nginx配置tomcat集群

1.配置nginx.cnf文件如下:

server {
      listen 80 default_server; server_name _; 
      return 444; #过滤其他域名的请求,返回444状态码 
}
server {
       listen 80; 
       server_name wx.ppp.com; # www.aaa.com域名  
       location / 
         { 
        proxy_pass http://wx.ppp.com; 
    #   proxy_pass http://localhost:8088; # 对应端口号8088 
            #proxy_ignore_headers X-Accel-Expires Expires Cache-Control; 
            #proxy_ignore_headers Set-Cookie; 
            #proxy_hide_header Set-Cookie; 
            #proxy_hide_header X-powered-by; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_set_header X-Forwarded-Proto https; 
            proxy_set_header Host $http_host; 
            expires 10m;
         } 
}

#服务器的集群  
upstream  wx.ppp.com {  #服务器集群名字   
        server    127.0.0.1:8088  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。  
        server    127.0.0.1:38088  weight=1;  
    }

(二)配置tomcat 与 redis session共享

1、安装redis

下载:wget -q http://download.redis.io/releases/redis-3.2.1.tar.gz

解压:tar -xzf redis-3.2.1.tar.gz

切换目录 cd ./redis-3.2.1

编译:make

安装:make install

运行:src/redis-server

2、 添加以下jar包:

tomcat85-session-redis-1.0.jar

jedis-2.9.0.jar

commons-pool2-2.4.2.jar

3、分别修改集群中tomcat的 context.xml 文件 ,在 Context下添加如下代码:

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
         host="localhost" 
         port="6379" 
         database="0" 
         maxInactiveInterval="60"  />

4、重启tomcat ,若启动正常则配置成功。

5、浏览器中分别访问集群tomcat 中的页面,观察sessionid 是否一致。

6、创建读写session jsp,一个用来写session,一个用来读session。

read.jsp读取session中的 userId

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Read session</title>
</head>
<body>
Server : Server 1 (因需将页面部署在不同Tomcat,以测试能读取另一台Tomcat设置的Session,请自行设服务器标识)<br />
<%=request.getSession().getAttribute("userId")%>
</body>
</html>

write.jsp写入userId到session中

<%@ page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Write session</title>
</head>
<body>
Server : Server 1 (因需将页面部署在不同Tomcat,以测试能读取另一台Tomcat设置的Session,请自行设服务器标识)<br />
Write session
<%
request.getSession().setAttribute("userId", new Date().getTime());
%>
</body>
</html>

分别将两个jsp文件放到tomcat中,在其中的一个tomcat中运行 write.jsp写入userId。然后其他tomcat中运行 read.jsp查看userId的值,发现会读取到第一个页面写入的userId,并且和其他tomcat中读取的值一致。大功告成!

注:tomcat85-session-redis-1.0.jar下载地址:http://download.csdn.net/download/wjwj1203/9934717

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微信小程序如何获取用户手机号 ?

    1、小程序端调用 wx.login() 方法,获取 code 后,将 code 通过后台 api 接口传递到后台。

    热心的程序员
  • ​微信小程序如何获取用户手机号 ?

    1、小程序端调用 wx.login() 方法,获取 code 后,将 code 通过后台 api 接口传递到后台。

    热心的程序员
  • Swift纯代码构建UICollectionView

    热心的程序员
  • 起步 - 从场景中看父子组件间通信

    组件间通信是组件开发的,我们既希望组件的独立性,数据能互不干扰,又不可避免组件间会有联系和交互。 在vue中,父子组件的关系可以总结为props down,ev...

    okaychen
  • DDoS防御的8种方针详解

    对付DDOS是一个系统工程,想仅仅依靠某种系统或产品防住DDOS是不现实的,可以肯定的是,完全杜绝DDOS目前是不可能的,但通过适当的措施抵御90%的DDOS攻...

    陈小黑
  • DDoS防御的8种方针详解

    对于遭受DDOS攻击的情况是让人很尴尬的,如果我们有良好的DDoS防御方法,那么很多问题就将迎刃而解,我们来看看我们有哪些常用的有效地方法来做好DDoS防御呢。

    周俊辉
  • DDoS防御的8种方针详解分类目录文章标签友情链接联系我们

    用户1246209
  • Nginx通过https方式反向代理的简单实现

    1)nginx的反向代理:proxy_pass 2)nginx的负载均衡:upstream 下面是nginx的反向代理和负载均衡的实例: 负载机:A机器:103...

    洗尽了浮华
  • 给你的README整一些花里胡哨的图片

    在浏览人类精华宝库GitHub时,老肥注意到有些项目的README文件中会展示其Star以及Fork的数目,如下图所示,

    老肥码码码
  • 010.Nginx正反代理

    nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器。同时也是一个IMAP、POP3、SMTP代理服务器。nginx可以作为一个HTTP服务器...

    木二

扫码关注云+社区

领取腾讯云代金券