HAProxy community

Tomcat subdomains and path redirection


#1

I’m new to HAProxy and am trying find some assistance with a configuration problem. I need to create a configuration that will allow me to dynamically proxy a Tomcat application Context path to a subdomain. The subdomain/path can not be hard coded and should be set up as a variable. I’ve had a look at the other suggestions throughout the site but none of them cover this particular issue. So far, I’ve put together this configuration from various existing examples.

This is what I need.

User request -> http://site1.domain.com/path
Redirect to https
HAProxy then makes a request to its backend pool using the URL http://<ip>:8080/site1/path
When the tomcat application returns links to assets they will have a path that will need to be redirected as well.

Site returns https://site1.example.com/site1/image.jpg
If exists, remove the first site1 from the path. https://site1.example.com/image.jpg
I’ve gotten this far using examples and other guides from this site, but i’m at the limits of knowledge in this area. I’m not sure how to remove the site1 in the path. Any suggestions would be welcome.

# Frontend Definition
frontend tomcat_contexts
    bind *:80
    bind *:443 ssl crt /etc/haproxy/cert.pem
    acl http ssl_fc,not
    http-request redirect scheme https if http
    reqadd X-Forwarded-Proto:\ https
    default_backend cluster

# Backend Definition
backend cluster
    balance roundrobin
    cookie JSESSIONID prefix nocache

    # Perform Subdomain url rewrite
    http-request set-var(req.subdomain) req.hdr(host),lower,regsub(\.example\.com$,) if { hdr_end(host) -i .domain.com }
    http-request set-path /%[var(req.subdomain)]%[path] if { var(req.subdomain) -m found }
    http-request set-header Host example.com if { var(req.subdomain) -m found }

    # Cluster machines
    server app01 192.168.69.181:8080 check cookie app01
    server app02 192.168.69.182:8080 check cookie app02