分享

RestFul 采用nginx作为请求审计记录工具

 WindySky 2019-02-28

   RestFul作为通用的json+http传输请求的规范,越来越多的api采用此形式进行交互。不可避免的,需要对其请求的内容进行审计。然而RestFul的Post请求一般采用以下的方式进行请求。

curl -H "Content-Type: application/json" -d '{"key":"value"}' http://localhost:8000/hello

    这一形式,是将json data 采用httpbody进行承载。在常用的http处理框架中,一般的处理形式都是从InputStream这种输入流中读取,流不可以二次读取,这个是肯定的。一旦在某个程序某个地方拦截之后,就无法让接下来的程序逻辑去透明的处理httpbody了。难道必须每个action都进行硬编码记录吗?答案是否定的,我们可以通过在处理框架前面堆代理服务器进行请求拦截和获取数据,也就是我们一般常说的反向代理。

    在nginx中,通过安装lua模块之后,在rewrite阶段通过lua去获取bodydata,然后再进行其余的操作,基本思路就是这样子的。

rewrite_by_lua '

ngx.req.read_body();

local body = ngx.req.get_body_data()

ngx.log(ngx.DEBUG,body);

...

'; 

    一般情况下,除了直接获取body之外,还需要对记录的内容做一些逻辑,这里就不阐述了。

--------------------- 

作者:IamLsz 

来源:CSDN 

原文:https://blog.csdn.net/imlsz/article/details/52955429 

版权声明:本文为博主原创文章,转载请附上博文链接!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多