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+SpringBoot实现负载均衡的示例
Mar 31 Servers
fastdfs+nginx集群搭建的实现
Mar 31 Servers
关于Nginx中虚拟主机的一些冷门知识小结
Mar 03 Servers
Nginx设置HTTPS的方法步骤 443证书配置方法
Mar 21 Servers
使用Docker容器部署rocketmq单机的全过程
Apr 03 Servers
微信告警的zabbix监控系统 监控整个NGINX集群
Apr 18 Servers
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
Jun 01 Servers
nginx之queue的具体使用
Jun 28 Servers
Nginx如何获取自定义请求header头和URL参数详解
Jul 23 Servers
Fluentd搭建日志收集服务
Sep 23 Servers
解决ubuntu安装软件时,status-code=409报错的问题
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递归使用示例(php递归函数)
2014/02/14 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
TopList标签和JavaScript结合两例
2007/08/12 Javascript
ie focus bug 解决方法
2009/09/03 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
python 垃圾收集机制的实例详解
2017/08/20 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
详解Python with/as使用说明
2018/12/13 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
2019/07/22 Python
python excel转换csv代码实例
2019/08/26 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
从python读取sql的实例方法
2020/07/21 Python
python实现学生管理系统开发
2020/07/24 Python
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
计算机科学技术自荐信
2014/06/12 职场文书
电教室标语
2014/06/20 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
财务管理专业自荐书
2014/09/02 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang