Nginx 过滤静态资源文件的访问日志的实现
程序员文章站
2022-03-07 18:04:55
凌乱的日志日常使用的 nginx 大都既做静态资源服务器,也做反向代理服务器,尤其有些时候考虑到跨域问题,会对静态资源和后端接口使用同一个监听端口,如果不做一下过滤处理,会在 access_log 中...
凌乱的日志
日常使用的 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 访问日志内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
Python的Flask框架及Nginx实现静态文件访问限制功能
-
Python的Flask框架及Nginx实现静态文件访问限制功能
-
Nginx实现静态资源的反向代理实例
-
nginx支持.htaccess文件实现伪静态的方法分享
-
python实现分析apache和nginx日志文件并输出访客ip列表的方法
-
linux服务器上使用nginx访问本地静态资源的方法
-
Nginx实现浏览器可实时查看访问日志的步骤详解
-
python脚本实现统计日志文件中的ip访问次数代码分享
-
Nginx + Tomcat实现请求动态数据和请求静态资源的分离详解
-
java路径问题:springboot的前段静态资源路径、java后端读取文件路径、直接访问html