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搭建rtmp直播服务器实现代码
Mar 31 Servers
Nginx部署vue项目和配置代理的问题解析
Aug 04 Servers
Nginx反向代理学习实例教程
Oct 24 Servers
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
Apr 02 Servers
tomcat正常启动但网页却无法访问的几种解决方法
May 06 Servers
Nginx 匹配方式
May 15 Servers
服务器间如何实现文件共享
May 20 Servers
linux目录管理方法介绍
Jun 01 Servers
Win2008系统搭建DHCP服务器
Jun 25 Servers
Centos7 Shell编程之正则表达式、文本处理工具详解
Aug 05 Servers
Nginx如何配置多个服务域名解析共用80端口详解
Sep 23 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
CodeIgniter安全相关设置汇总
2014/07/03 PHP
[原创]PHP实现SQL语句格式化功能的方法
2017/07/28 PHP
PHP基于自定义类随机生成姓名的方法示例
2017/08/05 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
Laravel + Elasticsearch 实现中文搜索的方法
2020/02/02 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
jquery实现输入框实时输入触发事件代码
2016/12/21 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
Python本地与全局命名空间用法实例
2015/06/16 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
用Python PIL实现几个简单的图片特效
2019/01/18 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
序列化Python对象的方法
2020/08/01 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
捷克电器和DJ设备网上商店:Electronic-star
2017/07/18 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
英语专业毕业生求职简历的自我评价
2013/10/24 职场文书
办公室前台的岗位职责
2013/12/20 职场文书
给全校老师的建议书
2014/03/13 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
社区志愿者活动总结
2014/06/26 职场文书
活动总结新闻稿
2014/08/30 职场文书
四查四看整改措施
2014/09/19 职场文书
业务内勤岗位职责
2015/04/13 职场文书
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL