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 相关文章推荐
Apache站点配置SSL强制跳转443
Mar 09 Servers
Nginx服务器添加Systemd自定义服务过程解析
Mar 31 Servers
Nginx 502 Bad Gateway错误原因及解决方案
Mar 31 Servers
Nginx服务器如何设置url链接
Mar 31 Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 Servers
利用Nginx代理如何解决前端跨域问题详析
Apr 02 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
利用nginx搭建RTMP视频点播、直播、HLS服务器
May 25 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
安装harbor作为docker镜像仓库的问题
Jun 14 Servers
利用Apache Common将java对象池化的问题
Jun 16 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 zend解密软件绿色版测试可用
2008/04/14 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
php实现与erlang的二进制通讯实例解析
2014/07/23 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
使用PHP生成图片的缩略图的方法
2015/08/18 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
jQuery实现仿QQ空间装扮预览图片的鼠标提示效果代码
2015/10/30 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
JS+CSS实现网页加载中的动画效果
2017/10/27 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
中专生职业生涯规划书范文
2013/12/29 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
公司贷款承诺书
2014/05/30 职场文书
步步惊心观后感
2015/06/12 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书