nginx实现根据cookie分流

您所在的位置:网站首页 如何判断nginx启动成功 nginx实现根据cookie分流

nginx实现根据cookie分流

2023-02-06 11:06| 来源: 网络整理| 查看: 265

0.环境:centos7.2,tomcat8.5*2 ,nginx1.0.13 0-1:起因,由于上线不能影响用户使用,起初使用ip分流,但是有些情况无法获取ip,故查到可以用COOKIE做分流,这样一来,可以给客户以及测试人员分配角色 ,根据角色设置COOKIE,再根据COOKIE实现分流,便可实现上线不影响现网使用。 1.nginx配置 upstream nttest{ # server 127.0.0.1:38080; server 127.0.0.1:39090; } upstream nttest1{ server 127.0.0.1:38080; } location ^~ /web/ { set $group nttest; if ($http_COOKIE ~* "hyb_test") { set $group nttest1; } proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; index index.html index.htm; proxy_pass http://$group; }

即,声明2个upstream,分别指向tomcat1和2,当路径匹配到web,设置变量group为nttest节点,判断COOKIE,如果COOKIE带有hyb_test,则设置变量group为nttest1节点,将请求代理到group。

2测试用例准备   nginx实现根据COOKIE分流 index.jsp @RequestMapping("/login") public String login2(String username,String password, HttpServletRequest req, HttpServletResponse resp){ if("hyb".equals(username)){ COOKIE COOKIE = new COOKIE("hyb_test_username",username); COOKIE.setPath("/"); // COOKIE.setDomain("domain"); resp.addCOOKIE(COOKIE); } return "success"; }   nginx实现根据COOKIE分流 跳转页面

 

将项目拉到2个tomcat,修改2.jsp内容即可,比如我将nttest1下的2.jsp修改为   nginx实现根据COOKIE分流 image.png 3测试分流

分别启动tomcat1,tomcat2,正常启动后访问index.jsp

  nginx实现根据COOKIE分流 index

因为没做登陆校验,直接点登陆即可,另开一个窗口,用hyb做用户名登陆,如图

  nginx实现根据COOKIE分流 image.png 分别点击登陆,   nginx实现根据COOKIE分流 image.png

hyb已经成功访问到nttest1,而其他登陆则访问了nttest,分流成功!

 

再看COOKIE   nginx实现根据COOKIE分流 image.png   nginx实现根据COOKIE分流 image.png


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3