www.andreknie.de { redir https://andreknie.de{uri} permanent } andreknie.de { root * /opt/andreknie/site 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' https://stats.andreknie.de; connect-src 'self' https://stats.andreknie.de; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com data:; img-src 'self' data: https:; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests" } handle /api/* { reverse_proxy localhost: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 } }