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 相关文章推荐
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
Mar 09 Servers
Nginx 502 Bad Gateway错误原因及解决方案
Mar 31 Servers
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
May 27 Servers
使用nginx配置访问wgcloud的方法
Jun 26 Servers
nginx实现动静分离的方法示例
Nov 07 Servers
详解nginx location指令
Jan 18 Servers
Nginx反向代理、重定向
Apr 13 Servers
Windows Server 2019 安装DHCP服务及相关配置
Apr 28 Servers
Ubuntu Server 安装Tomcat并配置systemctl
Apr 28 Servers
Windows Server 2012配置DNS服务器的方法
Apr 29 Servers
教你如何用cmd快速登录服务器
Jun 10 Servers
keepalived + nginx 实现高可用方案
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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php桌面中心(四) 数据显示
2007/03/11 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
jQuery弹出窗口简单实现代码
2017/03/09 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
python切换hosts文件代码示例
2013/12/31 Python
仅利用30行Python代码来展示X算法
2015/04/01 Python
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python自动登录126邮箱的方法
2015/07/10 Python
简要讲解Python编程中线程的创建与锁的使用
2016/02/28 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
高一历史教学反思
2014/01/13 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
个人查摆剖析材料
2014/10/16 职场文书
2015年端午节活动总结
2015/02/11 职场文书
2016年元旦主持词
2015/07/06 职场文书
《巨人的花园》教学反思
2016/02/19 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python