本文共 1585 字,大约阅读时间需要 5 分钟。
haproxy的配置中,有很多是基于条件来实现的 acl就是去实现标记不同的客户端请求。或者对请求和响应进行分类,分类以后,可以完成条件式转发或者阻断用户请求 使用访问控制列表(ACL)提供了一个灵活的解决方案来执行 内容切换,通告对应的分类请求和响应的内容进行决策 从请求、响应或任何环境状态。 能够分类请求和响应报文,并根据响应报文的分类结果做出决策,做访问控制的 nginx可以用location关键词来过滤请求,haproxy这个功能是依靠acl来实现的,定义一个所谓的分类条件以后,所有能被匹配到的条件都可以被此分类去匹配到,而以后的内容可以进行条件式访问控制 在haproxy当中,定义acl的放式也很简单 aclname,名称式当前acl的标识符,这个名称和代理名称相似,区分大小写 两个acl可以使用同一个名字,但条件不一样,就代表请求或响应报文匹配任何一条都生效 criterion匹配的值,请求和响应报文的匹配 operation大于小于某个指定的value,吧对应的检查标准和指定的值基于所指定的操作符做比较,如果符合条件为真,否则为假 字符串有很多变种,精确匹配,子串匹配,subdir子路径匹配,doman子域名匹配 16进程数据块 flags表示标记位 -m特殊的模式匹配方法,一般很少用到 -n禁止dns做解析 -u表示acl必须使用唯一id –表示强制解除flag 整数值,等于,大于等于,大于,小于 精确匹配,子串匹配,前缀匹配,后缀匹配,子路径匹配,域名匹配 下面是对路径 !取反 tcp报文只能检查,网络层匹配,源ip,目标ip, 传输层能匹配源端口,目标端口 应用层能匹配任何首部,host,cookie… dst 目标ip des port目标端口 srcip 源ip srcport源端口 acl只分类,要控制还要靠其他的指令来实现 非法的源ip地址 7层检查机制,block,阻塞访问的 if如果条件满足,就block acl定义在 所以阻断用户可以在前端进行 先定义后调用 制作一个403页面 一旦被阻断可以用errorfile 也可以跳转 基于302跳转 block3,4,7层的逻辑都能实现 既可以做允许也可以做拒绝 tcp只能实现3,4层的访问逻辑 **criterion除了指定源地址,目标地址,端口以外,还可以指定其他的信息 ** 可以检查请求的url path的变种 精确匹配,前缀匹配,后缀匹配 pathreg正则表达式匹配 dom域名匹配 有path就可以定义url什么时候开始,什么时候结尾 -i不区分大小写 有后端多个集群,就可以使用use_backend url精确匹配 beg前缀 dir路径 dom域名 end 是否可以检查用户请求时的协议类型 name代表指定的首部 只匹配出现相同报文的最后一个 正常web访问都是通过80请求 新加一个虚拟机,用nmtui 装一个websrv程序 查看启动失败的原因 server应该有名字的 再次修改 对curlsrv4层检查是可以的 在后端服务器上创建主页 之前200是阻断了,所以访问不到 这个就是条件式转发请求 匹配用户请求的报文首部,如果符合字符串就用下面的,如果不符合就用defaultbackend 假如想用haproxy做动静分离,php结尾的发送给php服务器,其他内容发送另外服务器 haproxy并不支持fastcgi协议 后端可以采用np(nginx php)或者ap(apache php) 该如何去写这个动静分离 直接请求没有问题 动态页面请求发往node1,其他的往另外的服务器转发 这样就动静分离了 对于haproxy而言还有很多内建的acl 动静分离的 haproxy支持https pem格式带表既要包含证书,也要包含私钥转载地址:http://jbkgn.baihongyu.com/