{ # Mailadresse fuer Let's Encrypt (Ablaufwarnungen). Ueberschreibbar per .env email {$ACME_EMAIL:business.djnizz@gmail.com} } # --- Weiterleitung www -> Apex ---------------------------------------------- # Setzt einen DNS-A-Record fuer www.djnizz.at voraus. Wenn es den nicht gibt, # diesen Block auskommentieren, sonst versucht Caddy dauerhaft erfolglos ein # Zertifikat dafuer zu holen. www.{$DOMAIN:djnizz.at} { redir https://{$DOMAIN:djnizz.at}{uri} permanent } # --- Hauptseite ------------------------------------------------------------- {$DOMAIN:djnizz.at} { encode zstd gzip header { Strict-Transport-Security "max-age=31536000; includeSubDomains" X-Content-Type-Options "nosniff" X-Frame-Options "SAMEORIGIN" Referrer-Policy "strict-origin-when-cross-origin" Permissions-Policy "geolocation=(), microphone=(), camera=(), payment=()" Cross-Origin-Opener-Policy "same-origin" -Server } # Astro haengt einen Content-Hash an alle Assets unter /_astro/ - # die duerfen daher unbegrenzt gecacht werden. # ">" ersetzt den Header, statt einen zweiten danebenzustellen - # der Node-Adapter setzt fuer gehashte Assets bereits ein Cache-Control. @immutable path /_astro/* header @immutable >Cache-Control "public, max-age=31536000, immutable" reverse_proxy web:4321 log { output file /var/log/caddy/access.log { roll_size 10MiB roll_keep 4 roll_keep_for 336h } # Client-IPs werden gekuerzt und Cookies/Auth-Header nicht mitgeloggt. # Muss zur Datenschutzerklaerung passen. format filter { wrap json fields { request>remote_ip ip_mask { ipv4 24 ipv6 32 } request>headers>Cookie delete request>headers>Authorization delete } } } }