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
|
|||
|
|
}
|
|||
|
|
}
|