基于cookie实现haproxy的session绑定:
实验前提:
1.本次实验在centos7.2的64位系统实现
2.实验有3台主机,地址拓扑如下
haproxy代理:192.168.137.216
web1:192.168.137.131
web2:192.168.137.128

   3.测试时请关闭防火墙和selinux以免带来问题

一:安装软件
(1)配置web1
1.1 首先安装web1服务器上的httpd
yum install httpd -y

      1.2 在web1上httpd根目录下写入内容到index.htmlecho "this is web1" >/var/www/html/index.html1.3 启动httpdsystemctl start httpd.service

(2)配置web2
2.1 安装web2服务器上的httpd
yum install httpd -y

      2.2 写入内容到httpd根目录echo "this is web2" > /var/www/html/index.html2.3 启动httpdsystemctl start httpd.service

(3)配置haproxy
3.1 yum方式安装haproxy
yum install haproxy -y

      3.2 配置haproxyhaproxy安装后会在etc/haproxy目录下生成haproxy.cfg的配置文件,大多数的配置选项都在这个文件中定义
打开配置文件然后修改零添加下列选项:backend webserver
balance     roundrobin
cookie      serverid insert nocache indirect
server      web1 192.168.137.131:80 check cookie webserver1
server      web2 192.168.137.128:80 check cookie webserver2

3.3 启动haproxy
systemctl start haproxy.service

注言:在实验中我使用的cookie的选项是insert,nocache和indirect.这几个选项的作用不同.indirect:如果不配合"indirect"选项,服务端可以看到客户端请求时的所有cookie信息。如果配合"indirect"选项,则haproxy在将请求转发给后端时,将删除自己设置的cookie,使得后端只能看到它自己的cookie,这样对后端来说,整个过程是完全透明的,它不知道前面有负载均衡软件preserve:如果insert关键字配合"preserve"关键字,那么当后端设置了cookie时,haproxy将强制保留该cookie,不做任何修改。例如在后端服务器上的应用程序也设置了cookie,例如后端的cookie名称为PHPSESSID,那么也就是说,如果将haproxy的cookie名称也设置为PHPSESSID,那么客户端第一次请求时收到的响应报文中将只有一个"Set-Cookie"字段,且这个字段的值是后端服务器设置的,和haproxy无关ignore-persist:其实,通过cookie表保持和后端的会话只是默认情况,haproxy允许"即使使用了cookie也不进行会话绑定"的功能。这可以通过ignore-persist指令来实现。当满足该指令的要求时,表示不将该cookie插入到cookie表中,因此无法实现会话保持,即使haproxy设置了cookie也没用。例如:backend dynamic_groupacl  url_dynamic   path_end  -i .phpignore-persist if  url_dynamiccookie app_cook insert nocacheserver app1 192.168.100.60:80 cookie app_server1server app2 192.168.100.61:80 cookie app_server2这表示当请求uri以".php"结尾时,将忽略会话保持功能。这表示,对于php结尾的请求,app_cook这个cookie从头到尾都是摆设当然,上面的设置是不合理的,更合理的应该是这样的acl url_static  path_beg         /static /images /img /cssacl url_static  path_end         .gif .png .jpg .css .jsignore-persist  if url_static与ignore-persist相对的是force-persist,但不建议使用该选项,因为它和option redispatch冲突

实现的结果截图:

     在其中有cookie首部,值是我刚才设置的webserver1.多次访问的也都是web1![](https://s1.51cto.com/images/blog/201804/23/37811dba033f582f5c1df1ebbb45d01a.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)此次试验到此结束!如有不当之处请指出,作者会努力修改!

转载于:https://blog.51cto.com/12814448/2106870

haproxy基于cookie实现会话绑定相关推荐

  1. nginx第三方模块---nginx-sticky-module的使用(基于cookie的会话保持)

    目前的项目网站架构中使用了F5和nginx,F5用来做负载均衡,nginx只用作反向代理服务器.最近应客户的要求准备去掉F5,使用软负载.大家都知道nginx抗并发能力强,又可以做负载均衡,而且使用n ...

  2. 浏览器禁用Cookie,基于Cookie的会话跟踪机制失效的解决的方法

    当浏览器禁用Cookies时.基于Cookie的会话跟踪机制就会失效.解决的方法是利用URL重写机制跟踪用户会话. 在使用URL重写机制的时候须要注意.为了保证会话跟踪的正确性,全部的链接和重定向语句 ...

  3. 基于hi-nginx的web开发(python篇)——cookie和会话管理

    hi-nginx通过redis管理会话. 要开启管理,需要做三件事. 第一件开启userid: userid on; userid_name SESSIONID; userid_domain loca ...

  4. Haproxy 与 Cookie

    1 什么是cookie ? 参考 cookie http://baike.baidu.com/view/835.htm Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份.进行 ...

  5. java day40【会话技术:Cookie 、会话技术:Session 、JSP:入门学习】

    第一章  会话技术 1. 会话:一次会话中包含多次请求和响应. * 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 2. 功能:在一次会话的范围内的多次请求间,共享数据 3. ...

  6. js如何获取jwt信息_学习后端鉴权系列: 基于JWT的会话管理

    内容回顾 上一节讲了基于Cookie+Session的认证方案. Even:学习后端鉴权系列: 基于Cookie, Session认证​zhuanlan.zhihu.com 由于基于Session方案 ...

  7. Cookie和会话Session

    Cookie和会话Session Cookie Cookie是识别客户端的特定用户. 1.每次HTTP请求的时候,客户端都会发送相应的Cookie信息到服务端.实际上大多数的应用都是用 Cookie ...

  8. js获取session_学习后端鉴权系列: 基于Cookie, Session认证

    说起鉴权大家应该都很熟悉, 不过作为前端开发来讲, 鉴权的流程大头都在后端小哥那边, 但是作为一个有志气的开发者肯定要好好学习整个鉴权流程以及方案, 不然怎么跟后端合作. 常见的鉴权方案 基于Cook ...

  9. 【No.1】基于Cookie的单点登录(SSO)

    2019独角兽企业重金招聘Python工程师标准>>> 这篇主要说明基于Cookie的单点登录实现,以及Cookie的一些特性以及使用说明. 1.Cookie是什么,如何工作的 在程 ...

最新文章

  1. 线段树 ---- 2021牛客多校第一场 J Journey among Railway Stations [线段树维护区间可行性判断]
  2. UI设计实战篇——利用Bootstrap框架制作查询页面的界面
  3. linux c 内核 ISO C90 forbids mixed declarations and code 警告
  4. bzoj2427: [HAOI2010]软件安装
  5. python元类的简单了解
  6. Java容器源码分析-HashSet vs TreeSet vs LinkedHashSet
  7. Spring的事务控制-基于xml方式
  8. colab从CPU切换到GPU以及配置查看
  9. fixture.detectChange如何通过Angular zone执行其异步逻辑的
  10. ImportError: cannot import name 'Graph' from 'pyecharts' 解决办法
  11. [面试]synchronized
  12. JetBrains 快捷键技巧:IntelliJ IDEA 中,你完全不需要鼠标的 10 种情况
  13. java继承求三角形圆形面积_Java - 三角形与圆形面积
  14. Redis客户端工具-AnotherRedisDesktopManager
  15. 如何枚举系统的视音频采集设备
  16. 在线教育直播平台对比(钉钉/保利威/小鹅通)
  17. xlsx文件怎么打开
  18. Stream之Collectors(toList()
  19. i7 8700k linux,性能起飞!I7-8700K 手动超频和一键超频教程
  20. js文件 格式_robots文件只能放在网站根目录吗?

热门文章

  1. php手册中点击下载的功能,PHP实现文件下载功能
  2. pythonselenium函数_selenium2.0 关于 python 的常用函数汇总
  3. datatables 树形表格 java数据组装_实学:Java开发自己的博客系统-第三十篇(后台添加栏目功能-4)...
  4. linux下camera驱动分析_LINUX设备驱动模型分析之三 驱动模块相关(DRIVER)接口分析...
  5. 报表下拉框多选查询及一般在sql中添加查询条件
  6. disruptor小结--消费者
  7. 博客文章加线框/表格
  8. 等级考试(一):三级网络---似曾相识
  9. 苹果、小米、荣耀智能手环都能测卫生纸心率?网友“测遍万物”玩坏了
  10. 找一份高薪的AI工作有多难?