Nginx 过滤静态资源文件的访问日志的实现


Posted in Servers onMarch 31, 2021

凌乱的日志

日常使用的 Nginx 大都既做静态资源服务器,也做反向代理服务器,尤其有些时候考虑到跨域问题,会对静态资源和后端接口使用同一个监听端口,如果不做一下过滤处理,会在 access_log 中看到大量的例如 js、css、jpg 等静态资源的请求,比较影响查看后端接口调用的日志

本来没有很在意这个东西,不过在浏览一篇关于 Nginx 优化的文章时,发现了一种用 map 定义一个是否写日志的参数的方法,结合最近使用 map 做动态的跨域配置,索性也是学习及记录一下 map 的另一个使用场景

使用 map 过滤访问静态资源文件的日志

http {
  log_format main '$remote_addr [$time_local] $request $status '
           'uct="$upstream_connect_time" rt="$request_time"';

  map $uri $not_static {
    default 1;
    ~^(.*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$) 0;
  }

  server {
    listen 23456;
    server_name localhost;
    access_log logs/test.log main if=$not_static;
  }
}

解释说明:

  • 自定义一个 log_format,标识为 main
  • 对请求中的 uri 做匹配,如果是以 gif、jpg、css、js 等作为结尾的资源,则 $not_static 为0,否则为1
  • 对访问23456端口的请求,access_log 指定使用标识为 main 的自定义日志格式,且仅当 $not_static 为1时才记录日志,关于 if 参数,可参考 官方文档
  • 有一点需要注意,access_log 中使用 if 参数时,必须显式指定一个 log_format,否则会报错: nginx: [emerg] unknown log format "if=$not_static"

另一种动静分离日志写法

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|woff|ttf)$ {
  #access_log off; #不输出访问静态资源的日志
  access_log logs/static_resources.log;
}

到此这篇关于Nginx 过滤静态资源文件的访问日志的实现的文章就介绍到这了,更多相关Nginx 访问日志内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx Rewrite使用场景及配置方法解析
Apr 01 Servers
Linux中Nginx的防盗链和优化的实现代码
Jun 20 Servers
nginx反向代理配置去除前缀案例教程
Jul 26 Servers
NGINX 权限控制文件预览和下载的实现原理
Jan 18 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
Windows Server 2019 安装DHCP服务及相关配置
Apr 28 Servers
使用Nginx的访问日志统计PV与UV
May 06 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
windows系统安装配置nginx环境
Jun 28 Servers
Docker部署Mysql8的实现步骤
Jul 07 Servers
windows server2016安装oracle 11g的图文教程
Jul 15 Servers
Elasticsearch6.2服务器升配后的bug(避坑指南)
Sep 23 Servers
Nginx的反向代理实例详解
nginx反向代理时如何保持长连接
Mar 31 #Servers
Nginx + consul + upsync 完成动态负载均衡的方法详解
Mar 31 #Servers
浅谈Nginx 中的两种限流方式
Mar 31 #Servers
查看nginx配置文件路径和资源文件路径的方法
Mar 31 #Servers
nginx里的rewrite跳转的实现
Mar 31 #Servers
nginx基于域名,端口,不同IP的虚拟主机设置的实现
Mar 31 #Servers
You might like
一个非常实用的php文件上传类
2017/07/04 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
JavaScript高级程序设计 DOM学习笔记
2011/09/10 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
javascript动态判断html元素并执行不同的操作
2014/06/16 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
如何改进javascript代码的性能
2015/04/02 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
jQuery获取checkbox选中的值
2016/01/28 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
AngularJS实现页面定时刷新
2017/03/14 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
js中url对象化管理分析
2017/12/29 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
基于TensorBoard中graph模块图结构分析
2020/02/15 Python
Django在Model保存前记录日志实例
2020/05/14 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
Structs界面控制层技术
2013/10/11 面试题
计算机专业个人简短的自我评价
2013/10/23 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
交通事故私了协议书
2014/04/16 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
大学生村官个人总结
2015/02/15 职场文书
财务稽核岗位职责
2015/04/13 职场文书
企业承诺书格式范文
2015/04/28 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
python的html标准库
2022/04/29 Python
mysql全面解析json/数组
2022/07/07 MySQL