net-ops/lb-common/overlay/opt/frontend/config/common/haproxy_fidus.j2
2025-05-13 14:00:44 +02:00

47 lines
1.8 KiB
Django/Jinja

{% extends 'common/haproxy_base.j2' %}
{% from "common/haproxy_macros.j2" import bind_ip_tls, web_security_options, acme_challenge, csp %}
{% block frontend %}
frontend {{ site_name }}
{{ bind_ip_tls(bind_ips, 443, tls_certificate_bundle) }}
timeout http-request 10s
timeout http-keep-alive 4s
http-request return status 200 content-type "text/plain" file "/opt/frontend/config/common/robots.txt" hdr "cache-control" "no-cache" if { path /robots.txt }
option forwardfor
http-request set-header X-Forwarded-Proto https
{{ web_security_options(['hsts', 'no_sniff', 'no_cache']) }}
{% block csp %}
{{ csp(["default-src " + ["'self'"]|join(' '),
"frame-src " + ["ds.fidus.skolverket.se"]|join(' '),
"font-src " + ["'self'", "fonts.googleapis.com", "ds.fidus.skolverket.se", "bootstrapcdn.com", "fonts.gstatic.com"]|join(' '),
"script-src " + ["'self'", "'unsafe-inline'", "'unsafe-eval'", "fidus.status.io", "ds.fidus.skolverket.se", "stackpath.bootstrapcdn.com", "api.status.io", "www.google-analytics.com", "ajax.googleapis.com"]|join(' '),
"connect-src " + ["'self'","api.status.io"]|join(' '),
"img-src " + ["*", "data:", "'self'"]|join(' '),
"style-src " + ["'self'", "'unsafe-inline'", "ds.fidus.skolverket.se", "stackpath.bootstrapcdn.com", "fonts.googleapis.com"]|join(' '),
"object-src " + ["'none'"]|join(' '),
]) }}
{% endblock csp %}
{{ acme_challenge(letsencrypt_server) }}
{% block usebackend %}
use_backend {{ site_name }}__default
{% endblock usebackend %}
{% endblock frontend %}
{% block backend %}
{{ output_backends(backends,
config=[
'cookie SERVERID insert indirect nocache',
'option httpchk'
]
)
}}
{% endblock backend %}