• CentOS7下Nginx搭建反向代理,并使用redis保存session


    1、启动两个tomcat,端口分别为8080,8081

    2、配置nginx,vim /usr/local/nginx/conf/nginx.conf

      添加如下配置:

      

    3、启动nginx或热加载

      启动:

        cd /usr/local/nginx/sbin

        ./nginx

      热加载

        ./nginx -s reload

    4、在tomcat中部署一个项目,写个servlet如下

    import java.io.IOException;
    import java.util.Random;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    public class HelloWorldServlet extends HttpServlet{
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            HttpSession session= request.getSession();
            int port2=request.getLocalPort();
            if(session.getAttribute("userid")==null){
                 String userid= String.valueOf(new Random().nextInt(100)) ;
                 session.setAttribute("userid", userid);
                 response.getWriter().append("Hello, "+userid+",this is "+port2+ " port");
            }else{
                String userid=(String)session.getAttribute("userid");
                response.getWriter().append("Welcome back, "+userid+", this is "+port2+" port") ;
            }
     
        }
    }

    配置web.xml

    <servlet>
         <servlet-name>HelloWorldServlet</servlet-name>
         <servlet-class>com.atguigu.servlet.HelloWorldServlet</servlet-class>
     </servlet>
     <servlet-mapping>
         <servlet-name>HelloWorldServlet</servlet-name>
         <url-pattern>/test</url-pattern>
     </servlet-mapping>

    5、访问测试,浏览器地址栏输入:

      nginx所在电脑ip/项目名/test

      此时,默认是轮询算法,每次访问的tomcat不一样导致,无法维护session会话。

    6、解决办法:用redis存储session,实现session共享

      6.1把jar包拷到tomcatlib包下

        commons-pool2-2.0.jar

        jedis-2.5.2

        tomcat-redis-session-manager1.2.jar

      6.2通知tomcat,不要管理session了,交给redis管理,需要修改tomcat配置文件,注意修改前先关闭tomcat

        启动redis   redis-server /redis配置文件

        编辑context.xml,在context节点加入:

    <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> 
    <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 
    host="redis电脑ip" 
    port="redis端口号" 
    database="0" 
    maxInactiveInterval="60" />

    7、在刷新浏览器,即使就会保持会话了,检查redis中也存了数据。

        

      

      

  • 相关阅读:
    Load Balancing 折半枚举大法好啊
    Big String 块状数组(或者说平方分割)
    K-th Number 线段树(归并树)+二分查找
    D. Powerful array 莫队算法或者说块状数组 其实都是有点优化的暴力
    CSU OJ PID=1514: Packs 超大背包问题,折半枚举+二分查找。
    运行时Runtime的API
    UIView的API
    UIControl的API
    UIScrollView的API
    使用KVO键值监听
  • 原文地址:https://www.cnblogs.com/xingrui/p/10280901.html
Copyright © 2020-2023  润新知