我是靠谱客的博主 苹果花生,最近开发中收集的这篇文章主要介绍【nginx】App打点场景下,用nginx的log捕获http协议的$request_body的正确方法,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
【应用场景】
App里面的打点数据想自己收集,可以考虑向nginx发一个json,通过nginx生成的日志实现实时获取数据。
所以问题就归结为nginx日志的生成。
正如 http://www.cnblogs.com/meteorx/p/3188647.html 这篇作者抱怨的,nginx并不会老老实实把request_body生成在log中。不会生成的原理在于nginx处理content之前是否读到了request_body,上文的作者给了一个很奇怪的解决方法,或许对于他来说是必须的,但是对于打点数据来说实在太复杂。
【解决方法】
简单的解决方案就在nginx配置文件之中。
配置文件的server=>location当中设置成不应答请求
server{
location = /event {set $invalid 1;
if ( $request_method = POST ) {
set $invalid 0;
echo_read_request_body;
access_log /logs/event_post.log post_format;
}
if ( $request_method = GET ) {
set $invalid 0;
access_log /logs/event_get.log get_format;
#return 200; 不要加这个,否则会导致捕获不到request_body
}
if ( $invalid ) {
access_log /logs/event_nongetpost.log;
return 405;
}
}
}
最后
以上就是苹果花生为你收集整理的【nginx】App打点场景下,用nginx的log捕获http协议的$request_body的正确方法的全部内容,希望文章能够帮你解决【nginx】App打点场景下,用nginx的log捕获http协议的$request_body的正确方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复