HAProxy7层模型下强大的ACL规则用法
来源:互联网 发布:以太网数据帧格式 mii 编辑:程序博客网 时间:2024/06/10 14:49
关于HAProxy的简单负载大家都有所了解,本次文章给大家介绍一些基于7层负载的acl控制方法
同理,贴出全文配置
## demo config for Proxy mode# global maxconn 20000#设定HAProxy进程可接受的最大并发数ulimit-n41000#linux命令行选项,等同于上参数 log 127.0.0.1 local0#全局的日志中配置,local0 是日志设备 info(err,warnig,minfo,debug)为日志级别,使用rsyslog uid 200 gid 200#用户和组 ,可以用uid,gid代替 chroot /var/emptynbproc1#HAProxy启动时可创建的进程数,配合daemon参数使用,默认只启动一个进程,该值应小于cpu核数。 daemon#进程后台运行,(推荐模式)defaultsmodehttpretries3timeoutconnect10stimeoutclient20stimeoutserver30stimeoutcheck5slistenadmin_statsbind*:9188modehttplogglobalstatsrefresh 30sstatsuri /haproxy-statusstatsrealm welcome login\ Haproxystatsauthadmin:admin~!@statshide-versionstatsadmin if TRUEfrontend test-proxybind*:80 mode http log global option httplogoptionforwardforoptionhttpclose#HAProxy在完成一次请教请求连接后,将主动关闭该连接,对性能非常有帮助 option dontlognull option nolinger option http_proxy maxconn 8000 timeout client 30s# layer3: Valid users#acl allow_host src 192.168.200.150/32acl allow_host src 192.168.10.0/24#acl allow_host src 0.0.0.0/24http-request deny if !allow_host# layer7: prevent private network relaying#acl forbidden_dst url_ip 192.168.0.0/24#acl forbidden_dst url_ip 172.16.0.0/12acl forbidden_dst url_ip 192.168.20.0/24http-request deny if forbidden_dstacl host_a hdr_reg(host) -i www.a.cnacl host_b hdr_dom(host) -i www.b.cnacl url_policyurl_sub-i buy_siduse_backendtest-proxy-srv-aifhost_ause_backendtest-proxy-srv-bifhost_buse_backendtest-proxy-srv-cifurl_policydefault_backend test-proxy-srv-defaultbackendtest-proxy-srv-defaultmodehttpretries2optionredispatchoptionabortoncloseoptionnolingeroptionhttp_proxy#optionhttpchk GET /index.phpbalanceroundrobincookieSERVERIDserver web0192.168.10.101:8999cookieserver0weight 4check inter 2000 rise 2 fall 3backend test-proxy-srv-amode httptimeout connect 5stimeout server 5sretries 2optionredispatch#应用于cookie保持的环境optionabortonclose#自动结束长时间连接option nolingeroption http_proxy#optionhttpchkGET /index.phpbalanceroundrobincookieSERVERIDserver web1192.168.10.101:8080cookieserver1 weight 6 check inter 2000 rise 2 fall 3server web2192.168.10.101:8888cookieserver2weight 6 check inter 2000 rise 2 fall 3backendtest-proxy-srv-bmodehttpretries2optionredispatchoptionabortoncloseoptionnolingeroptionhttp_proxy#optionhttpchk GET /index.phpbalanceroundrobincookieSERVERIDserver web3192.168.10.182:8080cookieserver3weight 8 check inter 2000 rise 2 fall 3backendtest-proxy-srv-cmodehttpretries2optionredispatchoptionabortoncloseoptionnolingeroptionhttp_proxy#optionhttpchk GET /index.phpbalanceroundrobincookieSERVERIDserver web4192.168.10.182:8888cookieserver4weight 6 check inter 2000 rise 2 fall 3# layer7: Only GET method is validacl valid_method method GETacl valid_methodmethod POSThttp-request deny if !valid_method# layer7: protect bad replyhttp-response deny if { res.hdr(content-type) audio/mp3 }
那本配置文件的acl控制主要是在frontend里设置
acl host_a hdr_reg(host) -i ^(www.a.cn|a.cn)
acl host_b hdr_dom(host) -i www.b.cn
acl url_policyurl_sub -i buy_sid
use_backend test-proxy-srv-a ifhost_a
use_backend test-proxy-srv-b ifhost_b
use_backend test-proxy-srv-c ifurl_policy
default_backend test-proxy-srv-default
第一个acl控制,当主机为www.a.cn或者a.cn时,规则返回TRUE,对应第一个use_backend 请求访问后端服务器池test-proxy-srv-a
第二个acl控制,当主机为www.b.cn时,规则返回TRUE,对应第二个use_backend请求访问后端服务器池test-proxy-srv-b
第三个acl控制,当请求url路径出现buy_sid 字符串时,规则返回TRUE,对应第三个use_backend请求访问后端服务器池test-proxy-srv-c
当所有规则均不为TRUE时,请求访问默认后端服务器池test-proxy-srv-default
当然acl还有更多的用法,如下
acl url_staticpath_end .gif .png .jpg .css .js
acl host_wwwhdr_beg(host) -i www
acl host_statichdr_beg(host) -iimg. video. download. ftp.
use_backendstatic ifhost_static || host_www url_static
use_backendwww if host_www
default_backendserver_cache
第一个acl,通过path_end参数定义请求的url以.gif,.png,.jpg,.css,.js结尾时返回TRUE
第二个acl,通过hdr_beg(host)参数定义如果客户端以www开头的域名发送请求时返回TRUE
第三个acl,也是通过hdr_beg(host)参数定义以img.,video.,download.,ftp.开头域名发送请求返回TRUE
第四行backend,定义了当请求需同时满足host_static与url_static时,或者满足host_www与url_static时请求将发往名为static 的backend
第五行backend,定义了当请求满足host_www规则时,请求发往名为www的backend
第六行backend,定义将用户请求默认调度到名为server-cache的backend
以上就是acl的常用控制用法,基本上可以满足日常负载需求。如果你有更多想法,欢迎留言
- HAProxy7层模型下强大的ACL规则用法
- QeePHP中modules下的模块ACL配置规则
- 5.3 postfix的ACL规则
- 强大的Django模型层插件:south详解
- 强大的Django模型层插件:south详解
- ACL规则
- ACL规则
- unix下的ACL
- Linux下的ACl
- Squid服务器的ACL规则详解
- 标准ACL的基本用法
- 扩展ACL的基本用法
- 命名ACL的基本用法
- ACL 模型
- 在HCI层ACL Connection的建立
- 在HCI层ACL Connection的建立
- 在HCI层ACL Connection的建立
- ACL 用法
- 《慕课网玩转算法面试》笔记及习题解答5.4.~5.6
- ijkplayer详解使用教程
- 51 nod oj 1189 素因子分解+逆元
- python3.5及numpy库的安装
- Linux读取文件到jsoncpp
- HAProxy7层模型下强大的ACL规则用法
- pip
- Android实现APP版本升级
- Lua入门(1) 编译环境、变量类型与三种结构的实现
- 阅读计划
- Android图片压缩的两个开源库:Luban和Compressor
- 一个正弦函数、余弦函数、坐标系的实例解析
- Android Studio lint工具所提示的需要注意的内容简要记录
- 1452: [JSOI2009]Count 二维树状数组