haproxy配置范例

HaProxy特性

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载(read)。

如果说在功能上,能以proxy反向代理方式实现WEB均衡负载,这样的产品有很多。包括 Nginx,ApacheProxy,lighttpd,Cheroke 等。

但要明确一点的,Haproxy 并不是 Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是 WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(php,cgi..)文件的传输以及处理。而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务。

但其配置简单,拥有非常不错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。自1.3版本开始还引入了frontend、backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend。

另外, 版本1.3 是处于活跃开发阶段的版本, 它支持如下新特性:

  • 内容交换:

可以根据请求(request)的任何一部分 来选择一组服务器, 比如请求的 URI , Host头(header) , cookie , 以及其他任何东西. 当然,对那些静态分离的站点来说,对此特性还有更多的需求。

  • 全透明代理:

可以用 客户端IP地址 或者任何其他地址来连接后端服务器,这个特性仅在Linux 2.4/2.6内核打了cttproxy 补丁后才可以使用。这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

  • 基于树的更快的调度器:

1.2.16以上的版本要求所有的超时都设成同样的值以支持数以万计的全速连接. 这个特性已经移植到1.2.17。

  • 内核TCP拼接:

避免了内核到用户然后用户到内核端的数据拷贝, 提高了吞吐量同时又降低了CPU使用率 . Haproxy 1.3支持Linux L7SW 以满足在商用硬件上数Gbps 的吞吐的需求。

  • 连接拒绝:

因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点。

  • 细微的头部处理:

使得编写基于header的规则更为简单,同时可以处理URI的某部分。

  • 快而可靠的头部处理:

使用完全RFC2616 兼容的完整性检查对一般的请求全部进行分析和索引仅仅需要不到2ms的时间。

  • 模块化设计:

允许更多人加入进此项目,调试也非常简单. poller已经分离, 已经使得它们的开发简单了很多。HTTP已经从TCP分离出来了,这样增加新的七层特性变得非常简单,其他子系统也会很快实现模块化。

  • 投机I/O 处理:

在一个套接字就绪前就尝试从它读取数据。poller仅推测哪个可能就绪哪个没有,尝试猜测,并且如果成功,一些开销很大的系统调用就可以省去了。如果失败,就会调用这些系统调用。已知的使用Linux epoll()已经净提升起码10%了。

  • ACLs:

使用任意规则的任意组合作为某动作的执行条件。

  • TCP协议检查:

结合ACL来对请求的任意部分进行检查,然后再进行转发。这就可以执行协议验证而不是盲目的进行转发。比如说允许SSL但拒绝SSH。

  • 更多的负载均衡算法:

现在,动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现。其他算法比如Weighted Measured Response Time也很快会实现。

开启日志

    • haproxy无记录日志问题,需修改/etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
 
# 增加local2日志
local2.*                                                /var/log/haproxy.log

配置范例

简单的tcp代理配置

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
 
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
 
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
 
##---------------------------------------------------------------------
## main frontend which proxys to the backends
##---------------------------------------------------------------------
#frontend  main *:5000
#    acl url_static       path_beg       -i /static /images /javascript /stylesheets
#    acl url_static       path_end       -i .jpg .gif .png .css .js
#
#    use_backend static          if url_static
#    default_backend             app
#
##---------------------------------------------------------------------
## static backend for serving up images, stylesheets and such
##---------------------------------------------------------------------
#backend static
#    balance     roundrobin
#    server      static 127.0.0.1:4331 check
#
##---------------------------------------------------------------------
## round robin balancing between the various backends
##---------------------------------------------------------------------
#backend app
#    balance     roundrobin
#    server  app1 127.0.0.1:5001 check
#    server  app2 127.0.0.1:5002 check
#    server  app3 127.0.0.1:5003 check
#    server  app4 127.0.0.1:5004 check
 
listen MyRdp
    mode tcp
    bind *:3389
    server myRdp1 192.168.1.100:3389 maxconn 32
    option tcplog
 
listen web_vip 0.0.0.0:80
    mode http
    option httplog
    option forwardfor  except 127.0.0.0/8
    stats  uri         /haproxy-stats

基本配置说明

global               #全局设置
    log 127.0.0.1   local0   #日志输出配置,所有日志都记录在本机,通过local0输出
    #log loghost    local0 info
    maxconn 4096             #最大连接数
    chroot /usr/local/haproxy
    uid 99                   #所属运行的用户uid
    gid 99                   #所属运行的用户组
    group haproxy            #用户组
    daemon                   #后台运行haproxy
    nbproc 1                 #启动1个haproxy实例
    pidfile /usr/local/haproxy/haproxy.pid  #将所有进程PID写入pid文件
    #debug
    #quiet
 
defaults             #默认设置
    #log    global
    log     127.0.0.1       local3      #日志文件的输出定向
 
    #默认的模式:tcp|http|health
    mode   http         #所处理的类别,默认采用http模式
 
    option  httplog      #日志类别,采用http日志格式`
    option  dontlognull
    option  forwardfor   #将客户端真实ip加到HTTP Header中供后端服务器读取
    option  retries 3    #三次连接失败则认证服务器不可用
    option  httpclose    #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只>能模拟这种模式的实现
    retries 3            #3次连接失败就认为服务器不可用,主要通过后面的check检查
    option  redispatch   #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
    option  abortonclose #当服务器负载很高时,自动结束掉当前队列中处理比较久的链接
    maxconn 2000         #默认最大连接数
 
    timeout connect 5000  #连接超时时间
    timeout client  50000 #客户端连接超时时间
    timeout server  50000 #服务器端连接超时时间
 
    stats   enable
    stats   uri /haproxy-stats   #haproxy监控页面的访问地址
    stats   auth test:test123    #设置监控页面的用户和密码
    stats   hide-version         #隐藏统计页面的HAproxy版本信息
 
frontend http-in              #前台
    bind    *:81
    mode    http
    option  httplog
    log     global
    default_backend htmpool   #静态服务器池
 
backend htmpool               #后台
    balance leastconn         #负载均衡算法
    option  httpchk HEAD /index.html HTTP/1.0    #健康检查
    server  web1 192.168.2.10:80 cookie 1 weight 5 check inter 2000 rise 2 fall 3
    server  web2 192.168.2.11:80 cookie 2 weight 3 check inter 2000 rise 2 fall 3
    # web1/web2:自定义服务器别名
    # 192.168.2.10:80:服务器IP:Port
    # cookie 1/2:表示serverid
    # weight: 服务器权重,数字越大分配到的请求数越高
    # check: 接受定时健康检查 
    # inter 2000: 检查频率
    # rise 2: 两次检测正确认为服务器可用
    # fall 3: 三次失败认为服务器不可用
 
listen w.gdu.me 0.0.0.0:80
    option  httpchk GET /index.html
    server  s1 192.168.2.10:80 weight 3 check
    server  s3 192.168.2.11:80 weight 3 check
 
# Haproxy统计页面
# --------------------------------------------------------------------------------------------
listen haproxy_stats
    bind 0.0.0.0:1080  #侦听IP:Port
    mode http
    log  127.0.0.1 local 0 err #err|warning|info|debug]
    stats refresh 30s
    stats uri /haproxy-stats
    stats realm Haproxy\ Statistics
    stats auth admin:admin
    stats auth test:test
    stats hide-version
    stats admin if TRUE  #手工启用/禁用后端服务器
 
 
# 网站检测listen配置
# --------------------------------------------------------------------------------------------
listen site_status
    bind 0.0.0.0:1081
    mode http
    log  127.0.0.1 local0 err
 
    #网站健康检查URI,用来检测Haproxy管理的网站是否可能,正常返回200、异常返回500
    monitor-uri /site_status
 
    #定义网站down时的策略
    #当backend中的有效服务器数<1时,返回true
    acl site_dead nbsrv(denali_server) lt 1
    acl site_dead nbsrv(tm_server) lt 1
    acl site_dead nbsrv(mms_server) lt 1
 
    #当满足策略的时候返回http-500,否则返回http-200
    monitor fail if site_dead
 
    #声名一个监测请求的来源网络
    monitor-net 192.168.0.252/31
 
 
# https的配置方法
# --------------------------------------------------------------------------------------------
listen login_https_server
    bind 0.0.0.0:443   #绑定HTTPS的443端口
    mode tcp           #https必须使用tcp模式
    log global
    balance roundrobin
    option httpchk GET /member/login.jhtml HTTP/1.1\r\nHost:login.daily.taobao.net
    #回送给server的端口也必须是443
    server vm94f.sqa 192.168.212.94:443 check port 80 inter 6000 rise 3 fall 3
    server v215120.sqa 192.168.215.120:443 check port 80 inter 6000 rise 3 fall 3
 
 
# frontend配置
# --------------------------------------------------------------------------------------------
frontend http_80_in
    bind 0.0.0.0:80   #监听端口
    mode http         #http的7层模式
    log global        #使用全局的日志配置
    option httplog    #启用http的log
    option httpclose  #每次请求完毕后主动关闭http通道,HA-Proxy不支持keep-alive模式
    option forwardfor ##如果后端服务器需要获得客户端的真实IP需要配置次参数,将可以从Http Header中获得客户端IP
 
    #HAProxy的日志记录内容配置
    capture request header Host len 40              # 请求中的主机名
    capture request header Content-Length len 10    # 请求中的内容长度
    capture request header Referer len 200          # 请求中的引用地址
    capture response header Server len 40           # 响应中的server name
    capture response header Content-Length len 10   # 响应中的内容长度(可配合option logasap使用)
    capture response header Cache-Control len 8     # 响应中的cache控制
    capture response header Location len 20         # 响应中的重定向地址
 
 
    #ACL策略规则定义
    #-------------------------------------------------
    #如果请求的域名满足正则表达式返回true(-i:忽略大小写)
    acl denali_policy hdr_reg(host) -i ^(www.gemini.taobao.net|my.gemini.taobao.net|auction1.gemini.taobao.net)$
 
    #如果请求域名满足trade.gemini.taobao.net返回true
    acl tm_policy hdr_dom(host) -i trade.gemini.taobao.net
 
    #在请求url中包含sip_apiname=,则此控制策略返回true,否则为false
    acl invalid_req url_sub -i sip_apiname=
 
    #在请求url中存在timetask作为部分地址路径,则此控制策略返回true,否则返回false
    acl timetask_req url_dir -i timetask
 
    #当请求的header中Content-length等于0时返回true
    acl missing_cl hdr_cnt(Content-length) eq 0
 
 
    #ACL策略匹配相应
    #-------------------------------------------------
    #当请求中header中Content-length等于0阻止请求返回403
    #block表示阻止请求,返回403错误
    block if missing_cl
 
    #如果不满足策略invalid_req,或者满足策略timetask_req,则阻止请求
    block if !invalid_req || timetask_req
 
    #当满足denali_policy的策略时使用denali_server的backend
    use_backend denali_server if denali_policy
 
    #当满足tm_policy的策略时使用tm_server的backend
    use_backend tm_server if tm_policy
 
    #reqisetbe关键字定义,根据定义的关键字选择backend
    reqisetbe ^Host:\ img           dynamic
    reqisetbe ^[^\ ]*\ /(img|css)/  dynamic
    reqisetbe ^[^\ ]*\ /admin/stats stats
 
    #以上都不满足的时候使用默认mms_server的backend
    default_backend mms_server
 
    #HAProxy错误页面设置
    errorfile 400 /home/admin/haproxy/errorfiles/400.http
    errorfile 403 /home/admin/haproxy/errorfiles/403.http
    errorfile 408 /home/admin/haproxy/errorfiles/408.http
    errorfile 500 /home/admin/haproxy/errorfiles/500.http
    errorfile 502 /home/admin/haproxy/errorfiles/502.http
    errorfile 503 /home/admin/haproxy/errorfiles/503.http
    errorfile 504 /home/admin/haproxy/errorfiles/504.http
 
 
# backend的设置
# --------------------------------------------------------------------------------------------
backend mms_server
    mode http           #http的7层模式
    balance roundrobin  #负载均衡的方式,roundrobin平均方式
    cookie SERVERID     #允许插入serverid到cookie中,serverid后面可以定义
     
    #心跳检测的URL,HTTP/1.1¥r¥nHost:XXXX,指定了心跳检测HTTP的版本,XXX为检测时请求
    #服务器的request中的域名是什么,这个在应用的检测URL对应的功能有对域名依赖的话需要设置
    option httpchk GET /member/login.jhtml HTTP/1.1\r\nHost:member1.gemini.taobao.net
     
    #服务器定义,cookie 1表示serverid为1,check inter 1500 是检测心跳频率
    #rise 3是3次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重
    server mms1 10.1.5.134:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1
    server mms2 10.1.6.118:80 cookie 2 check inter 1500 rise 3 fall 3 weight 2
 
 
backend denali_server
    mode http
    balance source     #负载均衡的方式,source根据客户端IP进行哈希的方式
    option allbackups  #设置了backup的时候,默认第一个backup会优先,设置option allbackups后所有备份服务器权重一样
 
    #心跳检测URL设置
    option httpchk GET /mytaobao/home/my_taobao.jhtml HTTP/1.1\r\nHost:my.gemini.taobao.net
 
    #可以根据机器的性能不同,指定连接数配置,如minconn 10 maxconn 20
    server denlai1 10.1.5.114:80 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3
    server denlai2 10.1.6.104:80 minconn 10 maxconn 20 check inter 1500 rise 3 fall 3
    #备份机器配置,正常情况下备机不会使用,当主机的全部服务器都down的时候备机会启用
    server dnali-back1 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
    server dnali-back2 10.1.7.114:80 check backup inter 1500 rise 3 fall 3
 
 
backend tm_server
    mode http
    balance leastconn   #负载均衡的方式,leastcon选择当前请求数最少的服务器
    option httpchk GET /trade/itemlist/prepayCard.htm HTTP/1.1\r\nHost:trade.gemini.taobao.net
    server tm1 10.1.5.115:80 check inter 1500 rise 3 fall 3
    server tm2 10.1.6.105:80 check inter 1500 rise 3 fall 3
 
 
#reqisetbe自定义关键字匹配backend部分
backend dynamic
    mode http
    balance source
    option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net
    server denlai1 10.3.5.114:80 check inter 1500 rise 3 fall 3
    server denlai2 10.4.6.104:80 check inter 1500 rise 3 fall 3
 
backend stats
    mode http
    balance source
    option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net
    server denlai1 10.5.5.114:80 check inter 1500 rise 3 fall 3
    server denlai2 10.6.6.104:80 check inter 1500 rise 3 fall 3

HAproxy 实践笔记

内核优化

vi /etc/security/limits.conf

追加如下两行:
*    soft    nofile     65535
*    hard    nofile     65535
优化后重启系统,使用ulimit -n查看并发数,看看是否生效

安装HAproxy

YUM安装

安装EPEL源或HAproxy源后运行安装命令

yum -y install haproxy

编译安装

yum install gcc gcc-c++
uname -a #查询内核版本
uname -r #查询内核版本
wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.12.tar.gz
tar -zxvf haproxy-1.5.12.tar.gz -C /usr/src/
cd /usr/src/haproxy-1.5.12/
make TARGET=linux2632 #2632是内核号码
make install

参考配置文件

cd examples/ && ls

增加日志服务器

vi /etc/rsyslog.conf
在文件最后追加三行如:

$ModLoad imudp
$UDPServerRun 514
local3.*        /var/log/haproxy.log

service rsyslog restart

撰写配置文件

创建chroot目录
mkdir /var/haproxy

cat /etc/haproxy/haproxy.cfg

#以下是配置文件内容
global
    log 127.0.0.1   local3 info
    maxconn 65535
    chroot /var/haproxy
    uid 99
    gid 99
    daemon
    nbproc 1
    pidfile /var/run/haproxy.pid
    ulimit-n 65535
    stats socket /var/tmp/stats

defaults
    log global
    mode    http
    maxconn 20480
    option  httplog
    option  httpclose
    option  dontlognull
    option  forwardfor
    option  redispatch
    option  abortonclose
    stats   refresh 30
    retries 3
    balance roundrobin
    cookie SRV
    timeout check 2000
    timeout connect 5000
    timeout client  50000
    timeout server  50000

listen admin_status  #定义HAProxy监控界面
    bind 0.0.0.0:6553
    mode http
    log 127.0.0.1 local3 info
    stats enable
    stats refresh 5s    #监控统计页面自动刷新时间为 5s
    stats realm Haproxy\ Statistics #登录监控页面提示符
    stats uri /admin?stats  #监控页面url路径
    stats auth admin:admin  #查看HAProxy监控页面的账户与密码
    stats hide-version  #隐藏HAProxy版本信息

frontend web_serivce    #定义终端用户访问的前端服务器
    bind 0.0.0.0:80
    mode http
    log global
    option httplog
    option httpclose
    option forwardfor
    acl inside_src src 192.168.74.0/24  #定义ACL inside_src地址段
    use_backend inside_servers if inside_src #定义ACL,如果IP是74.0段,则访问inside_servers
    default_backend external_servers #不属于inside_src段的IP 访问external_servers
backend external_servers
    mode http
    balance roundrobin  #轮询真实服务器
    option httpchk GET /index.html  #检查真实服务器的 index.html 文件,以此判断服务器的健康状态
    server web1 192.168.74.128:80 cookie web1 check inter 2000 rise 2 fall 3 weight 1
    server web2 192.168.74.130:80 cookie web2 check inter 2000 rise 2 fall 3 weight 1
    #cookie:定义后端真实服务器,向cookie信息中插入web1信息,check代表允许对服务器进行
    #check inter:健康检查,健康检查时间间隔为2000ms,连续两次健康检查成功,则认为服务器是有效开启的,
    #           连续三次健康检查失败后,认为服务器已经宕机
    #weight:服务器权重为1(越大越优先)
backend inside_servers
    mode http
    balance roundrobin
    option httpchk GET /index.html
    server web3 192.168.74.134:80 cookie web3 check inter 1500 rise 2 fall 3 weight 1
#以上是配置文件内容

启动

haproxy -f /etc/haproxy/haproxy.cfg

设置开机启动

echo "/usr/local/sbin/haproxy -f /etc/haproxy.cfg">>/etc/rc.local

客户端验证

如果使用192.168.74.0 会访问server3,否则是server1与server2的均衡负载

HAproxy各类参数整理表格

Global 配置项 描述
chroot < jail dir > 将工作目录切换至<`jail dir`>并执行chroot。该配置可增强 HAProxy 的安全性,但需要使用超级账户启动HAProxy程序
daemon 配置HAProxy以后台进程模式工作
uid < number > 配置进程的账户ID,建议设置为HAProxy专用账户
git < unmber > 配置进程的组ID,建议设置为HAProxy专用组
log < address >< facility > 配置全局syslog服务器,可以设置两台日志服务器
nbproc < number > 指定后台进程的数量
pidfile < pidfile > 将进程ID号写入<`pidfile`>文件
ulimit-n < number > 设置每个进程的最大文件描述符数量
maxconn < number > 设置每个进程支持的最大并发数
tune.bufsize < number > 设置buffer大小,默认值为16384
代理设置
mode HAProxy工作模式,可选项为:tcp,http,health
timeout check< timeout > 设置检查超时时间
contimeout < timeout > 设置连接超时时间
balance roundrobin 默认均衡负载工作模式,轮询
bind < address >:< port > 定义一个或多个监听地址或端口
stats auth admin:admin 设置监控界面的用户名密码
stats refresh 统计页面刷新间隔时间
option httplog 使用http日志
cookie < name > 启用基于cookie的保持连接功能
option forwardfor 允许插入 X-Forwarded-For 数据包头,给后端真实服务器,可以让后端服务器获得客户端的真实IP地址
option abortonclose 服务器负载高时,自动关闭队列里处理时间比较长的连接请求
option allbackups 当后端服务器全部宕机时,是否激活所有备用的服务器,默认仅启动第一个备用服务器
option dontlognull 不记录连接日志,主要用于不记录健康检查日志
option redispatch 在HTTP模式,如果使用cookie的服务器宕机,客户端还会坚持连接它,该选项在后端服务器宕机时强制将请求转发给其他健康主机。
monitor-uri < uri > 检查< uri >文件是否存在,依次判断主机健康状态。
monitor-fail if site_dead 当服务器宕机时,返回503错误代码,需要定义ACL
option httpchk 使用HTTP协议检查服务器健康状态
retries < value > 服务器连接失败后的重试次数
timeout client < n > 设置客户端最大超时时间为 n ,默认单位为毫秒
timeout server < n > 设置服务器最大超时时间为 n ,默认单位为毫秒
timeout connect < n > 设置连接最大超时时间为 n,默认单位为毫秒
default_backend 配置文件中没有 use_backend 规则时,设置默认后端服务器组,服务器组由backend定义
use_backend 当条件满足时,指定后端服务器组,需要设置ACL
acl< name >< criterion > 定义访问控制列表,配置文件中通过name调用该ACL,常用限制包括:dst(目标地址),dst_port(目标端口),src(源地址),hdr(连接头部信息),path_reg(访问路径匹配正则),url(统一资源定位符)

再来个HAProxy ACL的配置文件

#以下是配置文件

global
    daemon
    maxconn 65535
defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
frontend http-in
    bind *:80
acl badboys src 192.168.0.0/24 # 定义ACL控制源地址为192.168.0.0/24
acl example_acl hdr_reg(host) -i ^ (www.example.com|web.example.com) $
#定义ACL控制请求包头信息通过正则匹配 -i 代表不区分大小写
block if badboys  #如果badboys地址段访问,禁止
use_backend servers_2 if example_acl  #符合example_acl的客户端访问 servers_2
    default_backend servers_1 #没有ACL时使用默认服务器组
backend servers_1  #定义后端服务器组 servers_1
    server server1 127.0.0.1:8000 maxconn 32  #定义服务器组中的具体服务器
backend servers_2  #定义后端服务器组 servers_s
    server server1 127.0.0.1:8000 maxconn 3   #定义服务器组中的具体服务器


#以上是配置文件

发表评论