# https://hackviser.com/tactics/hardening/caddy { auto_https disable_redirects # Do not write access logs to journald. log { exclude http.log.access } # Write access logs to the logs volume in json # format. Only keep logs for the last 30 days. log access { format json output file /data/logs/access.log { roll_keep_for 720h } } } # Block with default http config that accepts requests on # fd/3 and redirects to https. (https-redir) { bind fd/3 { protocols h1 } redir https://{host}{uri} 308 } # Block with default https config that accepts requests on # fd/4 and fdgram/5. (https) { bind fd/4 { protocols h1 h2 } bind fdgram/5 { protocols h3 } } # Block with compression configuration. (compression) { encode zstd gzip } # Block with headers that should be used by most # sites. Add HSTS and some other security headers. # Remove the server header because without it caddy # leaks the backend server version. # https://scotthelme.co.uk/a-new-security-header-referrer-policy/ # https://scotthelme.co.uk/content-security-policy-an-introduction/ (default-headers) { header { Strict-Transport-Security max-age=31536000; includeSubDomains; preload X-Content-Type-Options nosniff X-Frame-Options sameorigin Content-Security-Policy default-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self' 'unsafe-inline'; Referrer-Policy: same-origin -Server -X-Powered-By } } import *.caddy