HAProxy not sending correct URL to LXD container

I want to have the following behaviour: In one virtual machine I have three LXD containers: One with HAProxy, another with a LDAP server, and the last one with a ticketing server (in future) The ticket system will have this URL (the format is the same as the real one): example.ex.com.cc and the LDAP system: example.ex.com.cc/ldap

The domain example.ex.com.cc works well. The problem is with the example.ex.com.cc/ldap URL. It says "The requested URL /ldap was not found on this server. It should show the apache2 ubuntu default page (from the ldap container) as it shows in the soporte container.

Here is the configuration of my HAProxy container (/etc/haproxy/haproxy.cfg):

    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    maxconn 2048

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    # An alternative list with additional directives can be obtained from
    #  https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
    ssl-default-bind-options no-sslv3
    tune.ssl.default-dh-param 2048

    log     global
    mode    http
    option  httplog
    option  dontlognull
    option  forwardfor
    option  http-server-close
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_frontend
    bind *:80

    acl web_host2 hdr(host) -i example.ex.com.cc
    acl web_host1 url_beg example.ex.com.cc/ldap
    #acl web_host1 hdr(host) -i example.ex.com.cc/ldap

    use_backend ldap if web_host1
    use_backend soporte if web_host2

backend ldap
    balance leastconn
    http-request set-header X-Client-IP %[src]
    server ldap ldap.lxd:80 check

backend soporte
    balance leastconn
    http-request set-header X-Client-IP %[src]
    server soporte soporte.lxd:80 check

Don´t know what is the problem. I followed this guide: https://blog.ssdnodes.com/blog/linux-containers-lxc-haproxy/ and made some changes from other sources. Thanks for reading!.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.