diff --git a/defaults/main.yml b/defaults/main.yml index 74c262b1e6148d16beeba0c421fe35c1153dcf0b..bbd7383e760f6b0e7bbf692b01250c3afe4bde63 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,4 +1,5 @@ default_proxy: '' +proxy_debug: false proxy_default_backend: '' proxy_certificates: [] proxy_timeout_connect: '5s' diff --git a/templates/haproxy_cfg.jinja2 b/templates/haproxy_cfg.jinja2 index 97fe6b1a3728a186d9eacc2b8e84b36994ebfb98..ec28b999fb5d60d99ba2ea653a777908c1d81465 100644 --- a/templates/haproxy_cfg.jinja2 +++ b/templates/haproxy_cfg.jinja2 @@ -121,7 +121,7 @@ frontend http_in {% if 'webserver' in groups %} {% for host in groups['webserver']|sort %} {% if hostvars[host].routing is defined %} - http-request set-header x-routing-host {{ host }} if !letsencrypt_challenge { hdr(x-routing-host) undefined } { hdr(host) -i -n {{ hostvars[host].routing.domain }} } { path -i -n -f /etc/haproxy/{{ host }}.path.list } + http-request set-header x-routing-host {{ host }} if !letsencrypt_challenge { hdr(x-routing-host) undefined } { hdr(host) -i -n {{ hostvars[host].routing.domain }} } { path -m reg -i -n -f /etc/haproxy/{{ host }}.path.list } {% endif %} {% endfor %} {% for host in groups['webserver']|sort %} @@ -242,7 +242,7 @@ frontend https_in_{{ cert.ip }} {% if 'webserver' in groups %} {% for host in groups['webserver']|sort %} {% if hostvars[host].routing is defined %} - http-request set-header x-routing-host {{ host }} if { hdr(x-routing-host) undefined } { hdr(host) -i -n {{ hostvars[host].routing.domain }} } { path -i -n -f /etc/haproxy/{{ host }}.path.list } + http-request set-header x-routing-host {{ host }} if { hdr(x-routing-host) undefined } { hdr(host) -i -n {{ hostvars[host].routing.domain }} } { path -m reg -i -n -f /etc/haproxy/{{ host }}.path.list } {% endif %} {% endfor %} {% for host in groups['webserver']|sort %} @@ -299,6 +299,9 @@ frontend https_in_{{ cert.ip }} {% for external in cert.external|default([]) %} backend backend_{{ external.key }} +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "{{ external.key }}" +{% endif %} {% for line in external.extra|default([]) %} {{ line }} {% endfor %} @@ -310,11 +313,17 @@ backend backend_{{ external.key }} {% if proxy_default_backend not in groups['webserver'] %} backend backend_{{ proxy_default_backend }} +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "deny" +{% endif %} http-response deny {% endif %} {% for host in groups['webserver']|sort %} backend backend_{{host}} +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "{{ host }}" +{% endif %} {% if host == inventory_hostname or host == 'localhost' %} http-response deny {% else %} @@ -325,6 +334,9 @@ backend backend_{{host}} {% endif %} backend backend_{{host}}_bigpipe +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "{{ host }}_bigpipe" +{% endif %} {% if host == inventory_hostname or host == 'localhost' %} http-response deny {% else %} @@ -336,6 +348,9 @@ backend backend_{{host}}_bigpipe {% endif %} backend backend_{{host}}_https +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "{{ host }}_https" +{% endif %} {% if host == inventory_hostname or host == 'localhost' %} http-response deny {% else %} @@ -347,6 +362,9 @@ backend backend_{{host}}_https {% endif %} backend backend_{{host}}_https_bigpipe +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "{{ host }}_https_bigpipe" +{% endif %} {% if host == inventory_hostname or host == 'localhost' %} http-response deny {% else %} @@ -362,6 +380,9 @@ backend backend_{{host}}_https_bigpipe {% if varnish_host|default(false) %} backend backend_varnish +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "varnish" +{% endif %} option httpchk HEAD /varnishcheck http-request set-header x-real-ip %[src] http-check expect status 200 @@ -374,6 +395,9 @@ backend backend_varnish {% endif %} backend backend_varnish_bigpipe +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "varnish_bigpipe" +{% endif %} no option http-buffer-request option httpchk HEAD /varnishcheck http-check expect status 200 @@ -387,16 +411,28 @@ backend backend_varnish_bigpipe {% endif %} backend backend_redirect_ssl +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "redirect_ssl" +{% endif %} redirect scheme https code 301 if TRUE backend backend_redirect +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "redirect" +{% endif %} redirect scheme http code 301 if TRUE backend backend_letsencrypt +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "letsencrypt" +{% endif %} server letsencrypt 127.0.0.1:54321 {% if kibana_users is defined %} backend backend_kibana +{% if proxy_debug %} + http-response set-header X-Proxy-Backend "kibana" +{% endif %} server kibana 127.0.0.1:5601 check maxconn 32 acl kibana_auth http_auth(kibana) if kibana_present http-request auth realm Kibana if !kibana_auth