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常用命令放入shell脚本详解
Mar 31 Servers
nginx 防盗链防爬虫配置详解
Mar 31 Servers
阿里云Nginx配置https实现域名访问项目(图文教程)
Mar 31 Servers
提升Nginx性能的一些建议
Mar 31 Servers
apache基于端口创建虚拟主机的示例
Apr 22 Servers
Nginx如何配置Http、Https、WS、WSS的方法步骤
May 11 Servers
Nginx防盗链与服务优化配置的全过程
Jan 18 Servers
在windows server 2012 r2中安装mysql的详细步骤
Jul 23 Servers
Nginx如何配置多个服务域名解析共用80端口详解
Sep 23 Servers
keepalived + nginx 实现高可用方案
Dec 24 Servers
nginx sticky实现基于cookie负载均衡示例详解
Dec 24 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中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP抽奖算法程序代码分享
2015/10/08 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
基于jQuery实现滚动切换效果
2016/12/02 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
Python常用模块用法分析
2014/09/08 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
低碳日宣传活动总结
2014/07/09 职场文书
2015年超市工作总结
2015/04/09 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
小学作文指导之如何写人?
2019/07/08 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
2022/04/11 Vue.js
python缺失值填充方法示例代码
2022/12/24 Python