Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Using HAProxy, I want to create the following setup:

  • All requests except root (/), /articles and /blogs go to server1
  • All requests for root (/), /articles and /blogs go to server2

I can't figure out how to match root without relying on setting the default server, which then negates the all requests go to server1 rule.

How can I express the above using HAProxy?

A regex may be the solution to this, but I'm not great with regex so it has been difficult to come up with a solution based on it.

share|improve this question
up vote 6 down vote accepted

The answer to this was astoundingly simple of course. The ACL needed to regex match ^$|^/$|^/articles|^/blogs

Below is my conf:

  pidfile  /var/run/

  mode  http
  option  httplog
  option  dontlognull
  option http-server-close
  retries 1
  maxconn 1024
  contimeout  15000
  clitimeout  60050
  srvtimeout    1200000

frontend www
  bind :80

  acl is_for_server2 path_reg ^$|^/$|^/articles|^/blogs

  use_backend server2 if is_for_server2

  default_backend server1

backend server1
  option forwardfor
  server server1 maxconn 1500

backend blade5
  option forwardfor
  server blade5 maxconn 1500
share|improve this answer
a request for /blogstuff would go to server2, whereas OP may have intended such a request would go to server1. To fix, the path_reg could be expanded to: ^$|^/$|^/articles/|^/articles$|^/blogs/|^/blogs$ – user252453 Nov 5 '14 at 12:47

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.