我是靠谱客的博主 苹果花生,最近开发中收集的这篇文章主要介绍【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的正确方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部