当前位置: 首页 > article >正文

Haproxy高级功能配置

一、基于cookie的会话保持

        1.cookie value:当前server指定的cookie值,实现基于cookie的会话粘性,不支持tcp mode需要指定为http  mode

        2.配置选项

                name:        cookie的key名称,用于实现持久连接

                insert:        插入新的cookie,默认不插入cookie

                indirect:        如果客户端已经有cookie,则不会再发送cookie信息

                nocache:        当client和proxy之间有缓存服务器时,不允许中间缓存器缓存cookie,因为这会导致很多经过同一个cdn的请求都发送到同一台后端服务器

                配置示例:

                        listen webserver_80

                        bind  172.25.254.100:80

                        option  forwardfor

                        mode  http

                        balance  roundrobin

                        cookie  WEBCOOKIE  insert  nocache  indirect

                        server  webserver1    192.168.0.101:80   cookie  web1   weight  1  check  inter  3s  fall  3  rise  5

                        server  webserver1    192.168.0.101:80   cookie  web1   weight  1  check  inter  3s  fall  3  rise  5

        3.状态页配置项

                stats  enable        基于默认的参数启用stats page

                stats  hide-version        将状态页中haproxy版本隐藏

                stats  refresh <delay>        设置自动刷新时间间隔,默认不自动刷新

                stats  uri  <prefix>        自定义stats  page uri,默认值为:/haproxy?stats

                stats  auth  <user>:<passwd>        认证时的账号和密码,可以定义多个用户,每行指定一个用户,默认为:no authentication

                启用状态页

                        listen  stats:

                                mode  http

                                bind   0.0.0.0:8888

                                stats  enable

                                log   global

                                stats  uri /status

                                stats  auth  test:test

二、IP透传

        1.web服务器中需要记录客户端真实的ip地址用来做访问统计、安全防护、行为分析、区域排行

        2.四层透传配置信息

                listen  webserver_80

                        bind  172.25.254.100:80

                        mode tcp

                        balance  roundrobin

                        server  webserver1  192.168.0.101:80  send-proxy  weight 1 check inter 3s  fall 3 rise 5

                        server  webserver2  192.168.0.102:80  send-proxy  weight 1 check inter 3s  fall 3 rise 5

                 通过tail  -n  3  /var/log/nginx/acces.log可以查看测试连接过程中的信息

        3.七层ip透传配置:

                由haproxy发往后端主机的请求报文中添加” X-Forwarded-For“首部,其值为前端客户端的地址用于向后端主机发送真实的客户端ip

                listen  webserver_80

                        option  forwardfor

                        bind  172.25.254.100:80

                        mode tcp

                        balance  roundrobin

                        server  webserver1  192.168.0.101:80  send-proxy  weight 1 check inter 3s  fall 3 rise 5

                        server  webserver2  192.168.0.102:80  send-proxy  weight 1 check inter 3s  fall 3 rise 5

        4.web服务器日志格式配置:配置web服务器,记录负载均衡透传的客户端的ip地址

                apache配置:

                        LogFormat  "%{X-Forward-For}i  %a  %l  %u  %t  \"%r\" %>s  %b  \"%{Referer}i\" \"%{User-Agent}i\""  combined

        其中 %{X-Forward-For}i通常用于记录客户端的真实ip地址

        %a,发起请求的客户端的ip地址,如果请求时经过代理服务器转发会记录代理服务器的ip地址

        %l,记录远程登录用户的身份,如果未设置会记录为 - 

        %u,这个字段记录请求的用户名,没有会记录为-

        %t,请求的时间戳,记录到达服务器的时间

        %r,记录了请求的第一行,包含请求方法路径和协议

        %>s,记录http响应的状态码

        %b,记录了响应的字节数(不包含http头部)

        %{Referer}i,记录请求头中的referer字段

        %{User-Agent}i,包含关于客户端浏览器、操作系统的详细信息

        combined,表示该格式包含了标准的combined log format

                nginx  日志格式:

                        $proxy_add_x_forwarded_for:        包括客户端ip和中间经过的所有代理ip

                        $http_x_forwarded_For:                只有客户端ip

                log_format  main  ' "$proxy_add_x_forwarded_for" - $remote_user [$time_local] "$request" '

                ' $status $body_bytes_sent "$http_referer" '

                ' "$http_user_agent" $http_x_forwarded_For ' ;

二、ACL:访问控制列表,一种基于包过滤的访问控制技术

        1.可以根据设定的条件对服务器传输的数据包进行过滤(条件匹配),对接收到的报文进行匹配和过滤,可以根据请求报文中的源地址、源端口、目标地址、目标端口】请求方法、url、文件后缀等信息内容进行匹配并执行进一步操作

        2.acl格式:

                acl        <aclname>  <criterion>     [flags]          [operator]        [<values>]

                acl                名称        匹配规范   匹配模式        具体操作符       操作对象类型

                acl  匹配规范:

                        hdr  string,提取在一个http请求报文的首部

                        hdr  ([<name> [,<occ>]])       完全匹配字符串,header的指定信息,<occ>表示在多值中使用的值的出现次数

                        hdr_beg ([<name> [,<occ>]])        前缀匹配,header中指定内容的begin

                        hdr_end([<name>  [,<occ>]])        后缀匹配,header中指定内容的end

                        hdr_dom        域匹配,header中domain name

                        hdr_dir             路径匹配,header中的uri

                        hdr_len              长度匹配,header的长度匹配

                        hdr_reg                正则表达式匹配

                        hdr_sub                子串匹配

                acl-flags匹配模式

                        -i 不区分大小写

                        -m 使用指定的正则表达式匹配方法

                        -n  不做dns解析

                        -u   禁止acl重名,否则多个同名的acl匹配或关系

                acl-operator具体操作符

                        整数比较:eq、ge、gt、le、lt

                        字符比较:exact  match :字符串必须完全匹配模式……

                acl-value操作对象

                        Boolean  布尔值        integer  or  integer  range  整数或整数范围用于端口匹配

                        IP  address  /network        ip地址或IP范围        String

                        regular   expression   正则表达式        hex  block  16进制

                多个acl逻辑处理

                        

                域名匹配配置

                        acl  web_host  hdr_dom(host)  www.xiao.org

                        use_backend  xiao_host  if  web_host(允许访问)

                        http-reauest  deny  if  web_host(拒绝访问)

                        default_backend  default_webserver

                        

                        backend  xiao_host

                                mode  http

                                 server  web1  192.168.0.101:80  check  weight  1  inter  3s  fall  3  rise  5

                                 server  web2  192.168.0.102:80  check  weight  1  inter  3s  fall  3  rise  5

                        backend  default_webserver

                                mode   http

                                   server  web1  172.25.254.10:80  check  weight  1 inter 1  inter  3s  fall  3   rise 5 

三、自定义haproxy错误界面

        1.对指定的错误进行重定向优雅的显示错误界面

                

        创建错误页面文件:mkdir  /haproxy/errorpages/  -p

                                        cp  /usr/share/haproxy/503.http    /haproxy/errorpages/503page.http

        关闭后端的rs主机用浏览器访问haproxy的Ip地址


http://www.kler.cn/a/526196.html

相关文章:

  • IT服务管理平台(ITSM):构建高效运维体系的基石
  • 实验六---基于MATLAB的根轨迹绘制与性能分析---自动控制原理实验课
  • DeepSeek极端榨取硬件性能被曝光
  • MATLAB中extractBetween函数用法
  • 基于Python的人工智能患者风险评估预测模型构建与应用研究(下)
  • 跨境数据传输问题常见解决方式
  • 安卓(android)学生管理系统
  • 如何用函数去计算x年x月x日是(C#)
  • 了解传输层UDP协议
  • Day29(补)-【AI思考】-精准突围策略——从“时间贫困“到“效率自由“的逆袭方案
  • 赛博算卦之周易六十四卦JAVA实现:六幺算尽天下事,梅花化解天下苦。
  • 18 大量数据的异步查询方案
  • Win11下帝国时代2无法启动解决方法
  • 安卓(android)实现注册界面【Android移动开发基础案例教程(第2版)黑马程序员】
  • JavaScript - Web APIs(下)
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.25 视觉风暴:NumPy驱动数据可视化
  • FFmpeg源码:av_base64_decode函数分析
  • Python练习(2)
  • 超级强大的压缩和解压工具,免费解压
  • Autosar-Os是怎么运行的?(时间保护)