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,
How did it make you feel?

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