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配置并兼容HTTP实现代码解析
Mar 31 Servers
Nginx的基本概念和原理
Mar 21 Servers
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
Apr 07 Servers
阿里云日志过滤器配置日志服务
Apr 09 Servers
tomcat默认最大连接数及相关调整方法
May 06 Servers
nginx设置资源请求目录的方式详解
May 30 Servers
Linux服务器离线安装 nginx的详细步骤
Jun 16 Servers
vscode远程免密登入Linux服务器的配置方法
Jun 28 Servers
Zabbix对Kafka topic积压数据监控的解决方案
Jul 07 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
Nginx跨域问题解析与解决
Aug 05 Servers
Shell中的单中括号和双中括号的用法详解
Dec 24 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中strtotime函数使用方法详解
2011/11/27 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
jQuery Easyui Treegrid实现显示checkbox功能
2017/08/08 jQuery
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
Django视图、传参和forms验证操作
2020/07/15 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
建筑经济管理专业求职信分享
2014/01/06 职场文书
交通事故调解协议书
2014/04/16 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
李强优秀员工观后感
2015/06/16 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
导游词之无锡唐城
2019/12/12 职场文书
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL
python区块链实现简版工作量证明
2022/05/25 Python