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开启Brotli压缩算法实现过程详解
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
Jul 07 Servers
Nginx配置文件详解以及优化建议指南
Sep 15 Servers
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 Servers
Windows Server 2012 R2 磁盘分区教程
Apr 29 Servers
配置nginx负载均衡
May 06 Servers
V Rising 服务器搭建图文教程
Jun 16 Servers
Tomcat 与 maven 的安装与使用教程
Jun 16 Servers
Windows Server 修改远程桌面端口的实现
Jun 25 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
Windows Server 2016服务器用户管理及远程授权图文教程
Aug 14 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 mssql扩展SQL查询中文字段名解决方法
2012/10/15 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
9个比较实用的php代码片段
2016/03/15 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
getElementById在任意一款浏览器中都可以用吗的疑问回复
2007/05/13 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
程序员必知35个jQuery 代码片段
2015/11/05 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
JavaScript ES6常用基础知识总结
2019/02/09 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
超简单使用Python换脸实例
2019/03/27 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
改变生活的男士内衣:SAXX Underwear
2019/08/28 全球购物
Viking比利时:购买办公用品
2019/10/30 全球购物
信息专业本科生个人的自我评价
2013/10/28 职场文书
药店收银员岗位职责
2015/04/07 职场文书
房贷收入证明范本
2015/06/12 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL
Windows7下FTP搭建图文教程
2022/08/05 Servers