haproxy4-acl配置

Posted huxl1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了haproxy4-acl配置相关的知识,希望对你有一定的参考价值。

访问控制设定:

匹配后可进行那些操作:

  Use _backend :   当符合条件时使用特定的backend后端,

    Use_backend  <backend> [{if | unless}  <condition>]

  Block             阻塞

    Block {if | unless} <condition>

技术图片
Acl  invalid_src  src  172.16.200.2   定义acl匹配
Block  if invalid_src               若来自这个地址进行阻塞
Errorfile  403  /etc/fstab       定义错误页
例如1

  http-request :         http请求

    http-request {allow  | deny} [{ if | unless}  <condition>]

  tcp-request:

    tcp-request  connection {allow | deny} [{if | unless}  <condition>]

acl:这里他的匹配条件有多种,可以使原地址,也可以是目标地址,目标端口,请求的资源类型,使用的方法等一切

格式:

  Acl  <name> < 检查哪些内容> [flags]  [operator条件] [<value>]

contion检查条件:

         Dst : ip     检查后端的ip

         Dst_port :     检查后端的端口

         Dst_conn     检查后端的套接字

         Src   :  ip   检查原ip

         Src_port       检查原端口

fLags : 

         -i : 忽略字符大小写

         -m: 使用特定匹配方式

         -n : 禁止主机名反解

         -u : acl不能与其他acl同名

         --  :  表示结束标志位

Operator:

         整数: eq  ge  gt  le  lt

         字符串:(之前)

                   -m  str  : 精确匹配

                   -m  sub  : 子串匹配

                   -m  beg  : 前缀匹配

                   -m  end  :   后缀匹配

                   -m  dir   : 路径匹配

                   -m  con  : 域名匹配

         Acl作为条件时的逻辑关系:

       ··         And             与

                   Or   ||    或

                   非  !          非

 

<value> 的类型可以是:

         Boolean : 布尔值

         Int  :   整数或一个整数范围

         Ip   :   ip地址

         Str   :   是一个字符串  进行匹配,有多重匹配方式

如  acl  invalid_src  src   172.16.200.2   检查原目标地址 是172.16.200.2 就符号条件

如:
定义一个acl: acl  allowstats  src  172.168.200.2   定义acl匹配原ip
定义一个配置后的规则: block   if  ! allowstats    阻塞除上原ip之外的其他地址访问
在阻塞后自定义错误页:
 errorloc  403  http://172.16.0.67:10080/errorloc/403.html
            
http-request  allow  if  allowstats  : 来自acl定义的这个运行访问

七层的匹配标准有:

  

Path 路径 (/imgs/logs/log.jpg)

                   Path:  精确匹配                                   (path /imgs/logs/log.jpg )

                   Path_beg  :前缀匹配                               (path_beg  /imgs)

                   Path_end  : 后缀匹配                            (path_end  .jpg)

                   Path_reg : z正则表达式模式匹配      (path_reg  ^/imgs/*)

                   Path_sub : 子串匹配                               (path_sub   logs)

                   Path_dir  : 子路径匹配                      (path_dir  logs/log.ipg)

                   Path_dom :  域名子串匹配

如;

         Acl  static  path_end  .jpg  .jpeg  .git  .txt  .html

         Usr_backend  staticserver( 后面定义的特定后端)  if   static   如果是acl中定义的就调用staticserver这个后端

url  : str

                   url : 精确url  匹配

                   url_beg

                   url_end

                   url_dir

                   url_reg

                   url_sub

                   url_dom

req.hdr    :请求报文的指定首部

                   hdr : 精确url  匹配

                   hdr_beg

                   hdr _end

                   hdr _dir

                   hdr _reg

                   hdr _sub

                   hdr _dom

如:

         Acl  bad_curl  hdr_sub(user-Agent)  -i  curl   请求报文首部包含cutl这个字符串的请求

         Block  if  bad_curl                                   拒绝curl 访问

    

 

以上是关于haproxy4-acl配置的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VS Code配置markdown代码片段

VS Code配置markdown代码片段

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段