Until today I was using the basic HAProxy settings, Today i found a task about selection of backend server basis of url request. While working on this task, I learned about HAProxy ACLs.
Task: I have wordpress installed as http://domainname.com/blog . This domain is running from 2 back-end server and balanced by HAProxy, The task is to redirect all /blog request to only single server.
Network Scenario for this setup
- HAProxy Server: 192.168.1.90
- WEB1 : 192.168.1.103
- WEB2 : 192.168.1.105
- Domain: tecadmin.net
The below example includes ACL for url_beg. url_beg matches the string used in url submitted. Using the url all requests starting with /blog ( tecadmin.net/blog ) will redirect to WEB2 ( 192.168.1.105 ) Server. All other requests will redirect to one of two server ( WEB1, WEB2 ), depending on load balancing algorithm used.
Here is a quick example of uses url_beg ACL:
global
log 127.0.0.1 local0 notice
maxconn 50000
daemon
defaults
log global
mode http
option httplog
option dontlognull
contimeout 120000
clitimeout 120000
srvtimeout 120000
option forwardfor
option http-server-close
# Configuration for HTTP site
frontend http-in
bind 192.168.1.90:80
acl is_blog url_beg /blog
use_backend tecadmin_blog if is_blog
default_backend tecadmin_website
backend tecadmin_blog
mode http
balance roundrobin # Load Balancing algorithm
option httpchk
option forwardfor
server WEB2 192.168.1.105:80 weight 1 maxconn 512 check
backend tecadmin_website
mode http
balance roundrobin # Load Balancing algorithm
option httpchk
option forwardfor
server WEB1 192.168.1.103:80 weight 1 maxconn 512 check
server WEB2 192.168.1.105:80 weight 1 maxconn 512 check
I hope this tutorial will help you to configure some basic ACL with haproxy .Regarding full configuration settings available for the ACL are listed in the haproxy configuration doc,

2 Comments
Rahul We have tried above configuration but its not working for us. please post the working config plz.
Very informative post…. I also never used ACl with haproxy, thanks