最近打算使用ELK搭建日志收集系统,前端移动端通过http请求发送日志请求到后端,后端记录日志到日志文件中,filebeat读取日志文件,推送到logstash,因为没有任何业务代码,后端的http服务器使用性能较高的nginx(springboot与netty测试结果另外在其他文章中讨论),nginx的post请求写日志费了一番周折,这里记录一下,以免后续忘记;
1、下载nginx源码:
nginx-1.12.2.tar.gz
LuaJIT-2.0.5.tar.gz
v0.10.9rc7.tar.gz
2、修改源码
因为默认nginx不支持post请求中的body写日志,所以需要通过修改源码的方式支持,见下面的链接:
https://blog.csdn.net/weixin_34115824/article/details/92984867
3、编译
编译后出现编译出错,替换v0.10.9rc7.tar.gz解决,之前用了低版本的包导致的;
4、运行时出错,用这篇文章的方法解决
https://my.oschina.net/ranhai/blog/1797454
5、中文转义字符的解决:
注意:日志需要在模块中重新定义才能正常输出post的请求;
6、post命令数据的长度限制:
因为是用在日志服务器中,前端需要定时积累日志数据并采用定时发送,在发送非常大的数据的时候发现log日志中的记录为空,查了资料发现默认post请求的最大长度不够(content-lenth大概12k左右就不写日志了),修改参数 “client_body_buffer_size”
参考文章:https://blog.51cto.com/fuyuan2016/1853410
最后:
整个过程参考:https://blog.csdn.net/weixin_37519367/article/details/73498756