log 127.0.0.1 local0 # 设置日志
log 127.0.0.1 local1 notice
chroot /usr/local/haproxy # 安装目录
# nbproc 1 # 进程数量,只能用于守护进程模式的haproxy;默认启动一个进程,一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式;
pidfile /var/run/haproxy.pid
mode http # 默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
option httplog # http 日志格式
option dontlognull # 不记录健康检查日志信息;
option redispatch # serverId对应的服务器挂掉后,强制定向到其他健康的服务器
# option abortonclose # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接;
# option forwardfor # 如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip;
# option httpclose # 主动关闭http通道,每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现;
balance roundrobin # 负载均衡算法,轮询;
timeout http-request 10s # 此为等待客户端发送完整请求的最大时长,应该设置较短些防止洪水攻击,如设置为2-3秒
# haproxy总是要求一次请求或响应全部发送完成后才会处理、转发,
timeout queue 1m # 请求在队列中的最大时长,1分钟太长了。设置为10秒都有点长,10秒请求不到资源客户端会失去耐心
timeout connect 10s # haproxy和服务端建立连接的最大时长,设置为1秒就足够了。局域网内建立连接一般都是瞬间的
timeout client 1m # 和客户端保持空闲连接的超时时长,在高并发下可稍微短一点,可设置为10秒以尽快释放连接
timeout server 1m # 和服务端保持空闲连接的超时时长,局域网内建立连接很快,所以尽量设置短一些,特别是并发时,如设置为1-3秒
timeout http-keep-alive 10s # 和客户端保持长连接的最大时长。优先级高于timeout http-request高于timeout client
timeout check 10s # 和后端服务器成功建立连接后到最终完成检查的时长(不包括建立连接的时间,只是读取到检查结果的时长),
maxconn 3000 # 默认和前段的最大连接数,但不能超过global中的maxconn硬限制数
bind 0.0.0.0:50000 # 监听IP和端口,为了安全可以设置本机的局域网IP及端口;
option httplog # 采用http日志格式
stats refresh 30s # 统计页面自动刷新时间
stats uri /haproxy?stats # 状态管理页面,通过/haproxy?stats来访问
stats realm Haproxy Manager # 统计页面密码框上提示文本
stats auth admin:admin # 统计页面用户名和密码设置
# stats hide-version # 隐藏统计页面上HAProxy的版本信息
# errorfile 403 /usr/local/haproxy/examples/errorfiles/ # 设置haproxy 错误页面
bind 0.0.0.0:80 # http请求的端口,会被转发到设置的ip及端口
# acl url_yuming path_beg www.yuming.com
# use_backend server_yuming if url_yuming
# 默认跳转项,当上面都没有匹配上,就转到backend的http_default上;
default_backend http_default
# errorfile 502 /usr/local/haproxy/examples/errorfiles/502.http
# errorfile 503 /usr/local/haproxy/examples/errorfiles/503.http
# errorfile 504 /usr/local/haproxy/examples/errorfiles/504.http
option forwardfor header Client-IP
# leastconn 最少连接先处理;在有着较长时间会话的场景中推荐使用此算法,如LDAP、SQL等,其并不太适用于较短会话的应用层协议,如HTTP;此算法是动态的,
# rdp-cookie 据据cookie(name)来锁定并哈希每一次请求
# hdr(name) 根据HTTP请求头来锁定每一次HTTP请求
balance roundrobin # 负载均衡的方式,轮询方式
# option httpchk GET /index.html
option forwardfor header X-Forwarded-For
server node1 192.168.1.101:8080 check inter 2000 rise 3 fall 3 weight 30
server node2 192.168.1.101:8081 check inter 2000 rise 3 fall 3 weight 30