diff --git a/defaults/main.yml b/defaults/main.yml index bb72b547356efa8cbca68e0091839db67ec3ce5c..c3963978e41c8c20c318245494c1d2909cc08916 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -10,6 +10,7 @@ proxy_maxconn: 100 proxy_varnish_maxconn: 1000 proxy_redirect_maps: domain: {} + domain-and-path: {} domain-append-path: {} path: {} proxy_blacklist: diff --git a/tasks/configure.yml b/tasks/configure.yml index e85f87607bbd8acefc9c78c1083bdd4c326fbe3c..09b168ff6147a01dbfedd4e8230ecda1252a2594 100644 --- a/tasks/configure.yml +++ b/tasks/configure.yml @@ -114,6 +114,7 @@ mode='644' with_items: - 'domain' + - 'domain-and-path' - 'domain-append-path' - 'path' notify: "Check HAProxy Config" diff --git a/templates/haproxy_cfg.jinja2 b/templates/haproxy_cfg.jinja2 index 11fef518d6ae109477ffd078955981282e1c1b45..6c73623a9d8f97456cd104ee01a6cfebe824e1a6 100644 --- a/templates/haproxy_cfg.jinja2 +++ b/templates/haproxy_cfg.jinja2 @@ -71,6 +71,7 @@ frontend http_in {% endfor %} http-request set-header x-routing-host undefined acl letsencrypt_challenge path_beg /.well-known/acme-challenge/ + http-request redirect code 301 location %[base,map(/etc/haproxy/redirect.domain-and-path.map)] if !letsencrypt_challenge { base,map(/etc/haproxy/redirect.domain-and-path.map) -m found } http-request redirect code 301 location %[capture.req.uri,map(/etc/haproxy/redirect.path.map)] if !letsencrypt_challenge { capture.req.uri,map(/etc/haproxy/redirect.path.map) -m found } http-request redirect code 301 location %[hdr(host),map(/etc/haproxy/redirect.domain.map)] if !letsencrypt_challenge { hdr(host),map(/etc/haproxy/redirect.domain.map) -m found } http-request redirect code 301 location %[hdr(host),map(/etc/haproxy/redirect.domain-append-path.map)]%[capture.req.uri] if !letsencrypt_challenge { hdr(host),map(/etc/haproxy/redirect.domain-append-path.map) -m found } @@ -191,6 +192,7 @@ frontend http_in frontend https_in_{{ cert.ip }} bind {{ cert.ip }}:443 ssl crt /etc/haproxy/certs/{{ cert.file }} no-sslv3 http-request del-header Proxy + http-request redirect code 301 location %[base,map(/etc/haproxy/redirect.domain-and-path.map)] if { base,map(/etc/haproxy/redirect.domain-and-path.map) -m found } http-request redirect code 301 location %[capture.req.uri,map(/etc/haproxy/redirect.path.map)] if { capture.req.uri,map(/etc/haproxy/redirect.path.map) -m found } http-request redirect code 301 location %[hdr(host),map(/etc/haproxy/redirect.domain.map)] if { hdr(host),map(/etc/haproxy/redirect.domain.map) -m found } http-request redirect code 301 location %[hdr(host),map(/etc/haproxy/redirect.domain-append-path.map)]%[capture.req.uri] if { hdr(host),map(/etc/haproxy/redirect.domain-append-path.map) -m found }