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 设置多个站跨域
Mar 09 Servers
Nginx+Tomcat实现负载均衡、动静分离的原理解析
Mar 31 Servers
如何利用map实现Nginx允许多个域名跨域
Mar 31 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
Nginx+Windows搭建域名访问环境的操作方法
Mar 17 Servers
使用kubeadm命令行工具创建kubernetes集群
Mar 31 Servers
Kubernetes控制节点的部署
Apr 01 Servers
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
Apr 29 Servers
nginx设置资源请求目录的方式详解
May 30 Servers
nginx之queue的具体使用
Jun 28 Servers
Nginx如何配置多个服务域名解析共用80端口详解
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 中dirname(_file_)讲解
2007/03/18 PHP
php 图片上添加透明度渐变的效果
2009/06/29 PHP
PHPThumb图片处理实例
2014/05/03 PHP
php封装的连接Mysql类及用法分析
2015/12/10 PHP
php外部执行命令函数用法小结
2016/10/11 PHP
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
JS限制文本框只能输入数字和字母方法
2015/02/28 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
详解Django框架中的视图级缓存
2015/07/23 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
pandas通过索引进行排序的示例
2018/11/16 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
flask项目集成swagger的方法
2020/12/09 Python
北京振戎融通Java面试题
2015/09/03 面试题
浙江文明网签名寄语
2014/01/18 职场文书
上课打牌的检讨书
2014/02/15 职场文书
大学生励志演讲稿
2014/04/25 职场文书
政治学求职信
2014/06/03 职场文书
国企干部对照检查材料
2014/08/22 职场文书
2014年党务工作总结
2014/11/25 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
房产电话营销开场白
2015/05/29 职场文书
电影焦裕禄观后感
2015/06/09 职场文书