SEO外包平台,我们为您提供专业的企业网站SEO整站优化外包服务 SEO设置

SEO外包平台

专注于企业网站SEO整站优化外包服务

日志分析系列(外传二):Nginx日志统一化

作者:jcmp      发布时间:2021-04-25      浏览量:0
本系列故事纯属虚构,如有雷同实属巧合为了

本系列故事纯属虚构,如有雷同实属巧合

为了完成对Nginx服务器的日志分析,小B对Q公司的Nginx日志做了统一化要求。下面是小B在统一化过程中遇到的一些知识点:

一、Nginx日志与字段解析

Q公司的Nginx版本信息是:1.17.6,使用编译安装,安装过程如下:

二、Nginx日志字段解析

首先小B需要弄明白Nginx日志中每个字段的含义:

三、Nginx获取body信息

在Q公司目前的架构中,使用GET传递参数的方式已经很少了,为了了解攻击者是否在body中嵌入攻击payload以及了解攻击者获取到了什么结果,小B需要采集body的日志信息。

四、打印request_body

打印request_body有两种方式:一种是使用nginx的模块;另外一种是使用lua编写脚本,如果需要限制nginx收集request_body的长度,最好使用后者。

ngx_http_core模块官网地址 http:// nginx.org/en/docs/http/ ngx_http_core_module.html 中有一段关于采集request_body的说明,内容如下:

此时Nginx的日志为:

使用 ngx_http_core 模块收集日志有没有办法限制request_body的长度呢?其实是有的。

在nginx配置文件中的 http{} 里面添加 client_max_body_size 1k; 即可。

但是这个配置是不允许用户上传超过1K大小的body内容,如果用户需要上传图片,业务可能就无法正常运行,所以不推荐使用此种方法。

我们在这里测试一下 ngx_http_core 的内容限制:

此时Nginx正常打印出了request_body。

此时Nginx无法打印request_body。

此时Nginx的日志为:

五、打印response_body

对于response_body我们只有使用lua编写脚本来采集。

此时Nginx的日志为:

request_body与response_body如果在上传文件或者下载文件时,内容会很大,采集全部内容需要考虑对系统、Nginx性能和日志存储等方面的影响。如果采集的body内容太短,也会导致采取不到我们想要的信息,所以根据业务取一个合理阈值。

nginx-->syslog-->logstash

小B在测试中与朋友交流得知,可以将nginx日志直接传输到logstash中而不落盘,但是这种方法传输的日志不可靠,并且会对nginx产生性能影响,可以在测试的时候使用。

六、统一Nginx日志格式

此时Nginx的日志为:

七、小结一下

八、踩坑记录

九、启动nginx报错

解决方案:卸载原有的luajit

解决方案:不要使用v0.10.15,使用14就没有问题了

十、参考资料

十一、History

日志分析系列(一):介绍篇

日志分析系列(外传一):Nginx透过代理获取真实客户端IP