静态资源日志应按需分流或关闭:高频低价值请求(如.js、.css、图片)宜禁用主日志,可用location匹配后缀+access_log off;需分析时可单独记录并精简格式;复杂路径推荐map变量控制;robots.txt等干扰请求应显式关闭日志。
静态资源访问日志不需要全量记录,核心是按需分流或关闭:高频但低业务价值的请求(如 .js、.css、图片)应避免写入主日志,既节省磁盘又提升分析效率。
最轻量的做法是在 location 块中匹配常见后缀,用 access_log off 彻底跳过记录:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|eot|svg|pdf)$ {
expires 1y;
add_header Cache-Control "public, immutable";
access_log off;
}
若需保留日志用于 CDN 回源分析、缓存命中率统计或故障回溯,建议分离存储并精简格式:
log_format static '$time_local|$remote_addr|$request|$status|$body_bytes_sent|$http_referer|$request_time';
location ~* .(js|css|png|jpg|woff2?)$ {
access_log /var/log/nginx/static_access.log static;
log_not_found off;
}
当静态资源路径不规则(如带版本号的 /assets/v2.1.0/main.js)或需结合 URI 路径、查询参数判断时,map 更可靠:
map $uri $log_static {
~*.(js|css|png|jpg|gif|woff2?)$ 0;
~*/static/ 0;
~*/api/ 1;
default 1;
}
access_log /var/log/nginx/access.log main if=$log_static;
有些请求虽带静态后缀,但不属于真实资源访问,应主动跳过: