:80 { root * /usr/share/caddy file_server { precompressed br gzip } encode { gzip } # 安全头配置保持不变 header /* { X-Content-Type-Options "nosniff" X-Frame-Options "DENY" Referrer-Policy "strict-origin-when-cross-origin" } # 缓存策略优化 header { # 默认动态内容不缓存 Cache-Control "no-cache, must-revalidate" # 静态资源缓存(改进正则表达式) @static { path_regexp \.(?:css|js|png|jpe?g|gif|ico|svg|woff2?|ttf|eot|web[pm]|avif)$ } header @static Cache-Control "public, max-age=31536000, immutable" } # SPA路由处理优化(通用方案) @spa { not file } rewrite @spa /index.html # 日志配置(保持精简) log { output stdout format json { time_format iso8601 } format filter { fields { request>remote_ip delete request>remote_port delete request>proto delete request>method delete request>headers delete resp_headers delete } wrap json } } # 错误处理 handle_errors { @404 { expression {http.error.status_code} == 404 } respond @404 "Not Found" 404 } }