HAproxy动静分离ACL书写规则,敢说全网较全

HAproxy ACL书写规则

通过ACL控制列表,实现基于 HAproxy的只能负载均衡系统。

ACL主要完成功能:2种

1、通过设置的AC规则检查客户端请求是否合法,如果符合ACL规则要求,则进行放行
2、符合的ACL规则要求的请求将被提交到后端的backend服务器集群,进行实现基于ACL的动静分离负载均衡。

ACL规则配置位置

在 frontend 前端虚拟服务器中写入 

在这里插入图片描述

ACL规则写入方法

acl 自定义的acl名称 acl方法 -i [匹配的路径或文件]
-i 不区分大小写

匹配方法注解例子
hdr_reg(host)多条完全合格域名检测hdr_reg(host) -i www.shm.com I baidu.shm.com
hdr_dom(host)单条完全合格域名检测hdr_dom(host) -i www.shm.com
hdr_beg(host)以某个域名开头hdr_beg(host) img. ftp. video. www.
path_begurl以什么开头进行检测path_beg www. 一般很少用
path_endurl以什么结尾进行检测path_end .gif .png .jpg .css .js .jsp .php
url_suburl包含某段字符串进行检测url_sub buy_sid= 一般很少用
url_dirurl包含部分地址路径进行检测url_dir timetask

详细ACL规则写入:

一、根据域名匹配

1.hdr_reg(host)
acl www_prolicy hdr_reg(host) -i www.shm.com|web.shm.com
如果客户端以 www.shm.com /web.shm.com的域名发送请求,-i忽略大小。此处一般为FQDN

2.hdr_dom(host)
acl www_prolicy hdr_dom(host) -i lvs.shm.com
如果客户端请求的域名满足 lvs.shm.com -i 忽略大小

3.hdr_beg(host)
acl www_prolicy hdr_beg(host) -i img. video. download. ftp.
如果客户端以 img. video. ftp.为开头的域名发送请求 -i 忽略大小

4.url_sub
acl www_prolicy url_sub -i buy_sid=
如果客户端请求的url中包含 buy_sid ,则控制列表返回 true ,否则为 flase

5.url_dir
acl www_prolicy url_dir -i timetask
如果客户端请求的url 中包含 timetask ,则控制策略返回 true,否则为 flase

二、根据请求的页面格式进行匹配

1.path_end
acl url_static path_end .gif .png .jpg .css .js
如果客户端请求的URL中以 .gif .png 。。。结尾返回true

2.php / jsp 页面动静分离
acl url_php path_end .php
acl url_jsp path_end .jsp
如果客户端请求的URL中以 .php / .jsp 结尾 返回true

三、控制列表指向后端真实服务器群组

1、use_backend + backend实例名			表示满足ACL规则后去请求哪个backend实例
2、default_backend + backend实例名		表示没有满足ACL规则后 去默认请求哪个 backend实例
3、block if  + acl策略名				表示阻止该ACL列表的请求

use_backend 真实服务器群组名 if ACL规则列表名
use_backend server_bbs if bbs_policy
当用户发送的请求满足 bbs_policy 的ACL规则时,HAproxy就会把请求发往 server_bbs这个真实服务器群组进行匹配

default_backend 真实服务群组名

default_backend server_cache
当用户发送的请求不满足任何一个acl规则时,HAproxy就会把请求发往由default_backend选项指定的server_cache这个后端群组

案例:

frontend www
        bind  *:80
        mode http
        option httplog
        option forwardfor
        option httpclose
        log global
        
        #ACL
        acl   url_static   path_end   .gif   .png   .jpg   .css   .js
        acl   url_php    path_end   .php 
        acl   url_jsp     path_end    .jsp
        acl   baidu_prolicy   hdr_reg(host)   -i    ^(baidu.com)
        acl   google_prolicy   hdr_reg(host)  -i   ^(google.com)

	#use_backend
	use_backend    server_php    if   url_php
	use_backend    server_jsp   if  url_jsp
	use_backend    server_static   if  url_static
	use_backend    server_baidu   if  baidu_prolicy
	user_backend   server_google  if  goole_prolicy
	
	#default_backend
	default_backend    server_cache

#后端服务器真实群组:php群组
backend server_php
    	 mode   http
	 option   redispatch
    	 option   abortonclose
   	 balance source
   	 cookie  SERVERID   
  	 option  httpchk  GET /index.php 
  	#option  httpche   GET /index.jsp   如果是 .jsp格式文件此处参数修改为 Index.jsp
  	
  	 server  default  192.168.10.5:80  cookie  php1  weight  3  check inter 2000  rise 2  fall 3
  	 server  default  192.168.10.6:80  cookie  php2  weight  3  check  inter  2000 rese 2 fall3 
   	 server  default  192.168.10.7:80  cookie  php3  weight  3  check  inter  2000 rese 2 fall3
   	
 ...太多了省略了,如果细心看相信自己写个配置文件是没问题的
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Debian系统中,实现haproxy动静分离需要按照以下步骤进行操作: 1. 首先,使用以下命令安装haproxy: ``` # apt-get install haproxy ``` 2. 然后,使用vim编辑haproxy的配置文件`/etc/haproxy/haproxy.cfg`,自定义一个frontend和backend,并注释掉原有的内容: ``` frontend websrv *:80 default_backend webservers backend webservers balance roundrobin server node1 192.168.20.11:80 check server node2 192.168.20.12:80 check ``` 3. 最后,使用以下命令测试haproxy的节点是否可达: ``` # ping 192.168.27.10 ``` 这样就完成了在Debian系统中实现haproxy动静分离的操作。请注意,以上步骤仅为示例,在实际应用中可能需要根据具体情况进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [HAProxy+apache实现web服务动静分离](https://blog.csdn.net/weixin_30736301/article/details/96542778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [haproxy基础详解及动静分离的实现](https://blog.csdn.net/dengkane/article/details/84733349)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值