一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx location 配置中如何配置以排除特定类型文件的访问日志

时间:2026-09-01 20:28:47 编辑:袖梨 来源:一聚教程网

Nginx中排除特定文件访问日志的唯一有效方式是在server块内、location /之前用正则或精确匹配并配置access_log off;如location ~*.(js|css|png|...)$ { access_log off; }和location = /healthz { access_log off; },禁用if块或子location内设置,需nginx -t && nginx -s reload验证。

在 Nginx 的 location 配置中排除特定类型文件的访问日志,核心就一条:对匹配到的文件后缀,直接写 access_log off;。这不是“过滤”,而是彻底不写入——这是唯一真正生效的方式。

用正则匹配后缀并关闭日志

这是最常用也最稳妥的做法。把以下配置放在 server 块内、通用 location / 之前(顺序很重要):

  1. location ~* .(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|pdf|zip|webp|mp4|avi|mkv)$ { access_log off; }
  2. ~* 表示大小写不敏感,能同时匹配 .JS.js
  3. 括号里按需增删后缀,比如加 |xml 就能排除 XML 文件
  4. 必须放早——如果它被写在 location / 后面,会被父级日志继承覆盖

单独处理无后缀但高频的路径

像健康检查或机器人协议这类请求,没有扩展名,但同样没必要记日志:

  1. location = /healthz { access_log off; return 200 "ok"; }
  2. location = /robots.txt { access_log off; log_not_found off; return 200 "User-agent: *nDisallow: /"; }
  3. location = /favicon.ico { access_log off; log_not_found off; try_files /favicon.ico =204; }
  4. = 精确匹配,性能高、无歧义,避免被其他正则规则误捕获

避开常见陷阱

很多配置看似合理,实际无效。关键点就几个:

  1. 别在 if 块里写 access_log off —— Nginx 不支持
  2. 别指望靠 log_format 或条件判断“筛掉”日志 —— access_log off 是唯一硬开关
  3. 别把规则塞进 location / 里面当子块 —— 子 location 无法取消父级已启用的日志
  4. 改完务必执行 nginx -t && nginx -s reload,否则不生效

验证是否生效

最直接的办法:

  1. curl 请求一个被排除的资源,比如 curl https://yoursite/logo.png
  2. 立刻查看 /var/log/nginx/access.log 末尾有没有新增记录
  3. 再请求一个普通页面(如 /),确认日志仍在正常写入

热门栏目