Nginx绑定IP,解决session共享

1.Nginx通过负载均衡IP地址固定绑定,解决Session共享
           upstream note.java.itcast.cn{
        ip_hash;
          server localhost:8080  weight=1;
          server localhost:8081  weight=1;
      }
            
            server {
                listen       80;
                server_name  note.java.itcast.cn;

                #charset koi8-r;

                #access_log  logs/host.access.log  main;

                location / {
                    
                    proxy_pass http://note.java.itcast.cn;
                    index index.html index.htm;
                    
                }
            }

 

只需要在 upstream添加一个 ip_hash;属性,

相同的请求就会一直请求第一次绑定的这个IP

 

实现方式

新建一个servlet用于接收请求

@WebServlet("/NginxSessionServlet")
public class NginxSessionServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("当前请求端口:"+req.getLocalPort());
        String action=req.getParameter("action");
        //向Session中存放一个数据
        if(action.equals("setSession")){
            req.getSession().setAttribute("username","zhangsan");
        }else if(action.equals("getSession")){
            resp.getWriter().write((String)req.getSession().getAttribute("username"));
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

实现效果

无论访问多少次,都只会请求8080端口

 

 

但是这种方式不推荐使用,因为其他的服务器就一直不会使用,达不到负载均衡的目的

推荐使用Spring-session+Redis的方式实现

https://www.cnblogs.com/chx9832/p/12298760.html

posted @ 2020-02-12 13:36  怀鑫  阅读(942)  评论(0编辑  收藏  举报