最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Nginx 中静态资源服务怎样管理访问日志记录
时间:2026-07-03 09:54:46 编辑:袖梨 来源:一聚教程网
静态资源日志应按需分流或关闭:高频低价值请求(如.js、.css、图片)宜禁用主日志,可用location匹配后缀+access_log off;需分析时可单独记录并精简格式;复杂路径推荐map变量控制;robots.txt等干扰请求应显式关闭日志。
静态资源访问日志不需要全量记录,核心是按需分流或关闭:高频但低业务价值的请求(如 .js、.css、图片)应避免写入主日志,既节省磁盘又提升分析效率。
直接关闭静态资源日志
最轻量的做法是在 location 块中匹配常见后缀,用 access_log off 彻底跳过记录:
- 在 server 或 http 块中添加如下配置:
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;
}
- ~* 表示大小写不敏感,能覆盖 JPG、PNG 等变体
- 不能在 if 块里写 access_log off —— Nginx 不支持该语法
- 此方式适用于纯托管静态文件、无需归档分析的场景
为静态资源单独记录日志
若需保留日志用于 CDN 回源分析、缓存命中率统计或故障回溯,建议分离存储并精简格式:
- 先在 http 块定义专用格式,例如:
log_format static '$time_local|$remote_addr|$request|$status|$body_bytes_sent|$http_referer|$request_time';
- 再在对应 location 中启用:
location ~* .(js|css|png|jpg|woff2?)$ {
access_log /var/log/nginx/static_access.log static;
log_not_found off;
}
- log_not_found off 可防止 404 静态请求刷屏日志
- 竖线分隔便于后续用 awk 或脚本解析
- 独立路径方便配合 logrotate 按日轮转、压缩归档
用 map 实现更灵活的控制
当静态资源路径不规则(如带版本号的 /assets/v2.1.0/main.js)或需结合 URI 路径、查询参数判断时,map 更可靠:
- 在 http 块中定义映射变量:
map $uri $log_static {
~*.(js|css|png|jpg|gif|woff2?)$ 0;
~*/static/ 0;
~*/api/ 1;
default 1;
}
- 然后在 server 块中按变量值开关日志:
access_log /var/log/nginx/access.log main if=$log_static;
- 这样只有 $log_static 为 1 的请求才记入主日志
- 比单纯后缀匹配更适应复杂路由结构
补充建议:排除干扰请求
有些请求虽带静态后缀,但不属于真实资源访问,应主动跳过:
- robots.txt、favicon.ico、健康检查路径(如 /healthz)可单独配置 access_log off
- 示例:
location = /robots.txt { access_log off; log_not_found off; return 200 "User-agent: *nDisallow: /n"; } - 避免这些高频低信息量请求污染日志或干扰统计
相关文章
- 炉石传说闪退问题全面解决指南:常见原因和实用修复方法 07-10
- 炉石传说卡顿原因分析及实用解决策略 07-10
- 炉石传说掉线后无法重连?快速解决重新连接失败问题 07-10
- 趣盘搜网页版入口-趣盘搜官网地址-趣盘搜入口官方网页版 07-10
- 炉石传说闪退原因与有效解决方法大全 07-10
- 炉石传说闪退怎么办?全面解决闪退问题的实用方法 07-10