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搭建图片服务器的过程详解(root和alias的区别)
Mar 31 Servers
Nginx反向代理及负载均衡如何实现(基于linux)
Mar 31 Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
Nginx的基本概念和原理
Mar 21 Servers
配置Kubernetes外网访问集群
Mar 31 Servers
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
Apr 07 Servers
KVM基础命令详解
Apr 30 Servers
Nginx 匹配方式
May 15 Servers
git stash(储藏)的用法总结
Jun 25 Servers
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
Jul 15 Servers
CentOS7 minimal 最小化安装网络设置过程
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中10个不常见却非常有用的函数
2010/03/21 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
php swoole多进程/多线程用法示例【基于php7nts版】
2019/08/12 PHP
javascript入门·动态的时钟,显示完整的一些方法,新年倒计时
2007/10/01 Javascript
MooTools 1.2中的Drag.Move来实现拖放
2009/09/15 Javascript
JQuery与iframe交互实现代码
2009/12/24 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
Vue编写多地区选择组件
2017/08/21 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
了解重排与重绘
2019/05/29 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
python实现的jpg格式图片修复代码
2015/04/21 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
Python实现身份证号码解析
2015/09/01 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
Python封装原理与实现方法详解
2018/08/28 Python
Python2与Python3的区别点整理
2019/12/12 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
python实现一个猜拳游戏
2020/04/05 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
药剂专业学生求职信范文
2013/12/28 职场文书
大学生个人学年总结
2015/02/15 职场文书
自我工作评价范文
2015/03/06 职场文书
关于车尾的标语大全
2015/08/11 职场文书
python实现三次密码验证的示例
2021/04/29 Python
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL