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 31 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
zabbix自定义监控nginx状态实现过程
Nov 01 Servers
Apache Linkis 中间件架构及快速安装步骤
Mar 16 Servers
nginx刷新页面出现404解决方案(亲测有效)
Mar 18 Servers
Nginx的基本概念和原理
Mar 21 Servers
Apache Hudi的多版本清理服务彻底讲解
Mar 31 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
zabbix配置nginx监控的实现
May 25 Servers
Nginx 配置 HTTPS的详细过程
May 30 Servers
腾讯云服务器部署前后分离项目之前端部署
Jun 28 Servers
搭建zabbix监控以及邮件报警的超级详细教学
Jul 15 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的urlencode()URL编码函数浅析
2011/08/09 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
js点击返回跳转到指定页面实现过程
2020/08/20 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
基于JS实现带动画效果的流程进度条
2018/06/01 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
Vue加载json文件的方法简单示例
2019/01/28 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python非递归全排列实现方法
2017/04/10 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
在线课程:Skillshare
2019/04/02 全球购物
为什么UNION ALL比UNION快
2016/03/17 面试题
师范生自我鉴定范文
2013/10/05 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
python可视化之颜色映射详解
2021/09/15 Python
MySQL新手入门进阶语句汇总
2022/09/23 MySQL