62 lines
1.4 KiB
Caddyfile
62 lines
1.4 KiB
Caddyfile
: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
|
||
}
|
||
} |