nginx 管理静态资源日志的核心是分类、精简与控制:通过 location 正则关闭高频低价值请求日志,或启用轻量独立日志格式,排除干扰路径,并配套日志轮转与监控。

Nginx 管理静态资源的访问日志,核心不是“要不要记”,而是“怎么分、怎么精、怎么控”——把高频低价值请求(如图片、CSS、JS)从主日志中剥离,避免磁盘打满、分析失真、性能拖慢。
用 location 正则直接关闭日志最简单
对明确以后缀识别的静态文件(.jpg、.css、.js 等),直接在 server 或 http 块里加一个匹配规则,关掉日志写入:
- 写法示例:
location ~* \.(jpg|jpeg|png|gif|css|js|woff2?|ttf|eot|svg|ico)$ {<br> access_log off;<br> expires 1y;<br> add_header Cache-Control "public, immutable";<br>} -
~*表示大小写不敏感,能覆盖.JPG、.Css等变体 -
access_log off是硬关闭,该 location 下所有请求都不进任何日志(包括主日志和自定义日志) - 切记:不能在
if块里写access_log off,Nginx 不支持
需要保留日志时,走独立文件 + 精简格式
如果要分析缓存命中率、CDN 回源或前端加载性能,可单独记录静态日志,但字段要克制:
- 在
http块定义轻量格式:log_format static '$remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time'; - 去掉
$http_cookie、$http_x_forwarded_for等冗余或敏感字段 - 在对应
location中启用:access_log /var/log/nginx/static_access.log static buffer=64k flush=5s;
加buffer和flush能显著降低 I/O 压力
排除干扰路径,让日志更干净
有些“静态后缀”其实不是资源,比如 /robots.txt、/favicon.ico、健康检查接口,它们高频但无业务意义:
- 显式关闭:
location = /robots.txt { access_log off; log_not_found off; return 200 "User-agent: *\nDisallow: /\n"; } - 同理处理
/favicon.ico、/apple-touch-icon.png等 - 若需按 UA 过滤爬虫或监控探针,可用
map模块结合log_if(Nginx ≥ 1.11.8)动态控制
配套运维不能少:轮转 + 权限 + 监控
静态日志即使精简,长期运行也会累积。必须配上基础运维保障:
- 创建日志目录并授权:
mkdir -p /var/log/nginx && chown www-data:www-data /var/log/nginx(用户按实际调整) - 配置
/etc/logrotate.d/nginx-static,按日切割、压缩、保留 30 天 - 定期检查
df -h和ls -lh /var/log/nginx/,防止突发流量冲爆磁盘











