之前自己要实现这样一个根据不同目录转发不到不同的后端服务器组,一直没实现,网上也找了些类似资料,但是始终没实现,后来折腾了很久终于实现了,特此记录一下,但愿能帮助到像我之前那样的找不到方法的人;
配置文件如下:
global
log 127.0.0.1 local3
maxconn 4096
chroot /usr/local/haproxy
user root
group root
daemon
nbproc 1
pidfile /usr/local/haproxy/haproxy.pid
#debug
ulimit-n 65535
tune.ssl.default-dh-param 2048
defaults
log global
mode http
retries 3
option httplog
option httpclose
option dontlognull
option forwardfor
option redispatch
option http-pretend-keepalive
option http-server-close
balance roundrobin
maxconn 4096
timeout connect 5000
timeout client 50000
timeout server 50000
listen admin_stats
stats admin if TRUE #手工启用/禁用,后端服务器
bind *:9999
stats refresh 30s
stats uri /status
stats realm Haproxy Manager
stats auth root:admin888
stats hide-version
frontend public
bind 0.0.0.0:80
bind 0.0.0.0:443 ssl crt /usr/local/haproxy/conf/haproxy_aaa.pem
capture request header Host len 50
capture request header Connection len 20
capture response header Connection len 20
##设置域名及后缀,带后缀的写在默认域名前面
acl mobile_domain hdr_beg(host) mobile.aaa.com
acl log_domain hdr_beg(host) log.aaa.com
acl admin_domain hdr_beg(host) admin.aaa.com
acl test_lb path_beg -i /lb
###################
###需要实现访问mobile.aaa.com/lb 转发到后端172.28.3.106的80上面
use_backend lb_group if mobile_domain test_lb ##这条规则就是匹配mobile.aaa.com/lb使用的
use_backend log_group if log_domain
use_backend mobile_group if mobile_domain
use_backend admin_group if mobile_admin
default_backend mobile_group ##默认的这条一定要加上,之前一直不行就是因为这一行没加。这一行如果没有特殊的需要可以随便指定一个后端转发组。
backend mobile_group
balance roundrobin
server 168_80 172.28.1.168:80 check inter 1000 rise 3 fall 3
backend log_group
balance roundrobin
server 168_5341 172.28.1.168:5341 check inter 1000 rise 3 fall 3
backend admin_group
balance roundrobin
server 178_80 172.28.1.178:80 check inter 1000 rise 3 fall 3
###################################################
backend lb_group
mode http
balance roundrobin
server 3D106 172.28.3.106:80 check inter 1000 rise 3 fall 3