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

    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之外,还需要对记录的内容做一些逻辑,这里就不阐述了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值