www.andreknie.de { redir https://andreknie.de{uri} } localhost, andreknie.de { root * /dist encode zstd gzip header { Strict-Transport-Security "max-age=31536000" X-Content-Type-Options "nosniff" X-Frame-Options "DENY" Referrer-Policy "strict-origin-when-cross-origin" Permissions-Policy "camera=(), geolocation=(), microphone=()" Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://stats.andreknie.de; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; font-src 'self' data: https://fonts.gstatic.com; connect-src 'self' https://stats.andreknie.de; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'" } handle /api/* { reverse_proxy backend:3003 } @assets path /assets/* handle @assets { header Cache-Control "public, max-age=31536000, immutable" file_server } handle { header Cache-Control "no-cache, no-store, must-revalidate" try_files {path} /index.html file_server } } stats.andreknie.de { reverse_proxy umami:3000 }