How to rewrite domain.com to www.domain.com with HAProxy?

Arjan picture Arjan · Oct 3, 2013 · Viewed 27.2k times · Source

We have 1 loadbalancer with 3 members behind it:

main balancer: www.website.com members: web1.website.com, web2.website.com and web3.website.com

Currently we are using nginx on the loadbalancer, but we want to replace it with HAProxy.

Nginx rewrites the domain without www (domain.com) to www.domain.com with the following line:

server {
    server_name domain.com;
    listen 1.2.3.4:80;

    rewrite ^(.*) http://www.domain.com$1 permanent;
}

How can I manage this with HAproxy?

My haproxy config:

frontend http 1.2.3.4:80

    default_backend www_cluster
    acl is_www hdr_end(host) -i www.domain.com
    use_backend www_cluster if is_www


backend www_cluster

    balance roundrobin
    cookie SERVERID insert nocache indirect

    option httpchk HEAD / HTTP/1.0
    option httpclose
    option forwardfor

    server web1 1.2.3.5:82 cookie WEB1 check
    server web2 1.2.3.6:82 cookie WEB2 check
    server web3 1.2.3.7:82 cookie WEB3 check

TIA!

Answer

Ianthe the Duke of Nukem picture Ianthe the Duke of Nukem · Nov 7, 2013

Revise the frontend block:

frontend http 1.2.3.4:80
    default_backend www_cluster
    redirect prefix http://www.mydomain.com code 301 if { hdr(host) -i domain.com }

Source:

  1. Haproxy redirect www to non-www
  2. HAProxy 1.4 Manual
  3. Personal experience