首先是haproxy.cfg文件的基本标注

当然实际配件没有下面这个复杂,可以根据需要自行增减。

global
log 127.0.0.1 local1
maxconn 65000 #最大连接数
chroot /usr/local/haproxy #安装目录
uid 99 #用户haproxy
gid 99 #组haproxy
daemon #守护进程运行
nbproc 1 #进程数量
pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid defaults
log global
mode http #7层 http;4层tcp
option httplog #http 日志格式
option httpclose #主动关闭http通道
option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option forwardfor
option dontlognull
maxconn 50000 #最大连接数
contimeout 5000 #连接超时(毫秒)
clitimeout 50000 #客户端超时(毫秒)
srvtimeout 50000 #服务器超时(毫秒) #errorfile 502 /usr/local/haproxy/html/maintain.html
#errorfile 503 /usr/local/haproxy/html/maintain.html
#errorfile 504 /usr/local/haproxy/html/maintain.html frontend test.com #定义前端服务器(haproxy)
bind *:80 #监听地址
acl web-client path_beg -i /vsphere-client
acl bbs hdr_reg(host) -i ^(bbs.test.com|shequ.test.com|forum)
acl monitor hdr_beg(host) -i monitor.test.com #定义ACL名称,对应的请求的主机头是monitor.test.com
acl www hdr_beg(host) -i www.test.com
use_backend cache.test.com if static
use_backend monitor.test.com if bbs or monitor
use_backend www.test.com if www
use_backend vsphere-client if web-client default_backend www.test.com #指定默认的后端服务器 backend monitor.test.com #定义后端服务器群(web server/apache/nginx/iis..)
mode http
option forwardfor #后端服务器(apache/nginx/iis/*),从Http Header中获得客户端IP
balance leastconn #负载均衡的方式,最小连接
cookie SERVERID #插入serverid到cookie中,serverid后面可以定义
option httpchk HEAD /check.html #用来做健康检查html文档
#option httpchk HEAD /index.php HTTP/1.1\r\nHost:monitor.test.com #HTTP && Host
server server1 10.0.100.70:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3
#服务器定义:
#cookie server1表示serverid为server1;
#check inter 2000 是检测心跳频率(check 默认 );
#rise 3 表示 3次正确认为服务器可用;
#fall 3 表示 3次失败认为服务器不可用;
#weight 表示权重。 backend www.test.com
mode http
option forwardfor
balance roundrobin #负载均衡的方式,轮询方式
cookie SERVERID
option httpchk HEAD /check.html
server server1 10.0.100.71:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 backend vsphere-client
mode http
option forwardfor header ORIG_CLIENT_IP
balance roundrobin
server server1 10.0.100.81:80 redir https://192.168.57.81:443 check inter 2000 rise 3 fall 3 weight 3 backend cache.test.com
option forwardfor
#balance uri len 15 #url hash
balance roundrobin
server server1 10.0.100.73:80 check inter 2000 rise 3 fall 3 weight 3
server server2 10.0.100.75:80 check inter 2000 rise 3 fall 3 weight 3 listen admin_stat #status
bind 0.0.0.0:8080 #监听端口
mode http #http的7层模式
stats refresh 30s #统计页面自动刷新时间
stats uri /haproxy_stats_url #统计页面URL
stats realm Haproxy\ Statistics #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息
stats admin if TRUE #手工启用/禁用,后端服务器

下面重点介绍一下ACL策略,这个匹配策略很重要。

下面是一个根据域名匹配的写法

acl a-server base_dom -i www.a.com
use_backend a-server if a-server acl b-server base_dom -i www.b.com
use_backend b-server if b-server ##以下表示请求在以上路径都不符合时,使用该后台服务器处理
default_backend root

acl语法

#acl 参数
acl(关键字) 定义acl(名称) 方法(criterion) -i (flags) [匹配的路径或文件]
hdr_beg(host)
hdr_reg(host)
path_beg
path_end
criterion
#base 
base : exact string match
base_beg : prefix match
base_dir : subdir match
base_dom : domain match
base_end : suffix match
base_len : length match
base_reg : regex match
base_sub : substring match
--------------------- #path
path : exact string match
path_beg : prefix match
path_dir : subdir match
path_dom : domain match
path_end : suffix match
path_len : length match
path_reg : regex match
path_sub : substring match
--------------------- #url
url : exact string match
url_beg : prefix match
url_dir : subdir match
url_dom : domain match
url_end : suffix match
url_len : length match
url_reg : regex match
url_sub : substring match
--------------------- #hdr
hdr([<name>[,<occ>]]) : exact string match
hdr_beg([<name>[,<occ>]]) : prefix match
hdr_dir([<name>[,<occ>]]) : subdir match
hdr_dom([<name>[,<occ>]]) : domain match
hdr_end([<name>[,<occ>]]) : suffix match
hdr_len([<name>[,<occ>]]) : length match
hdr_reg([<name>[,<occ>]]) : regex match
hdr_sub([<name>[,<occ>]]) : substring match
---------------------

flags

-i 不区分大小写
-m 使用指定的pattern匹配方法
-n 不做DNS解析
-u 强制每个ACL必须唯一ID,否则多个同名ACL或关系
– 强制flag结束. 当字符串和某个flag相似时使用

参考:

https://blog.csdn.net/nange_nice/article/details/78444793

https://blog.51cto.com/dngood/886547

												

最新文章

  1. Http原理理解及内容整理
  2. [课程设计]任务进度条&amp;开发日志目录
  3. C# 根据类名称创建类示例
  4. Linux下查看机器公网IP
  5. lucene 建立索引的不同方式
  6. 那些年,我们开发的接口之:QQ登录(OAuth2.0)
  7. Tornado服务器的学习
  8. mysql用户管理,权限管理
  9. Objective-C 实例方法可见度,方法
  10. bzoj3637: Query on a tree VI
  11. YesFinder - 网页文件管理系统 V2.0
  12. 为什么所有浏览器的userAgent都带Mozilla
  13. centos7 yum 安装 redis
  14. 最小生成树之Prim算法
  15. 堡垒机jumpserver测试记录--使用
  16. JavaScript 中的FileReader对象(实现上传图片预览)
  17. mysql Mac终端操作
  18. Codeforces 235C Cyclical Quest - 后缀自动机
  19. CF使用TGP下载后,分卷文件损坏的解决方法
  20. LigerUI下拉选择列表LigerComboBox中tree的节点初始化默认选中的问题

热门文章

  1. 微信小程序API~地理位置location
  2. robot framework 笔记(二),web ui 元素定位
  3. CF600E Lomsat gelral 和 CF741D Dokhtar-kosh paths
  4. LG4723 【模板】常系数线性递推
  5. [唐胡璐]Selenium技巧 - 利用MonteScreenRecorder录制视频
  6. jdk、jre、jvm三者联系
  7. mysql 端口号被占用
  8. LightOJ - 1226 - One Unit Machine(排列组合)
  9. 微信网站防屏蔽防红的措施以及微信域名检测API等工具的技术原理
  10. learning java 字符串常用操作