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配置https原理及实现过程详解
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
利用Nginx代理如何解决前端跨域问题详析
Apr 02 Servers
uwsgi+nginx代理Django无法访问静态资源的解决
May 10 Servers
nginx部署多前端项目的几种方法
May 25 Servers
Nginx反向代理至go-fastdfs案例讲解
Aug 02 Servers
Tomcat弱口令复现及利用
May 06 Servers
鲲鹏 CentOS 7 安装Python3.7
May 11 Servers
阿里云服务器Ubuntu 20.04上安装Odoo 15
May 20 Servers
Nginx开源可视化配置工具NginxConfig使用教程
Jun 21 Servers
windows系统安装配置nginx环境
Jun 28 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
Re:从零开始的异世界生活 第2季 开播啦
2020/07/24 日漫
PHP与Java进行通信的实现方法
2013/10/21 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
javascript求日期差的方法
2016/03/02 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
NODE.JS跨域问题的完美解决方案
2016/10/20 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
Python素数检测的方法
2015/05/11 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
python实现kNN算法
2017/12/20 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
用Python解数独的方法示例
2019/10/24 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
基于ccs3的timeline时间线实现方法
2020/04/30 HTML / CSS
会展中心部门工作职责
2013/11/27 职场文书
财务主管的岗位职责
2013/12/30 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
施工质量承诺书范文
2014/05/30 职场文书
上课迟到检讨书
2015/05/06 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android
sass 常用备忘案例详解
2021/09/15 HTML / CSS
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技