我是靠谱客的博主 无限店员,最近开发中收集的这篇文章主要介绍nginx访问日志中添加接口返回值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

因为nginx作为web服务器时,会代理后端的一些接口,这时访问日志中只能记录访问接口的status码,也就是说,只能获得200、404 这些的值

 

那么如何获得接口返回的response值呢?

 

下面开始
1、需要在nginx中安装lua插件

下载luaJIT插件
# cd /usr/local/src
# wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz
# tar -xzvf LuaJIT-2.0.2.tar.gz
# cd LuaJIT-2.0.2
# make
自己检查没有出现ERROR,就是证明安装成功了,我make没有出错,如果出错请自行谷歌一下。

2、安装nginx

# cd /usr/local/src/
# wget http://nginx.org/download/nginx-1.4.2.tar.gz     #之前选过比较新的nginx版本,但是发现可能这种安装方式不太对,所以机选的这个版本
# tar -xzvf nginx-1.4.2.tar.gz
# cd nginx-1.4.2

//先导入环境变量,告诉nginx去哪里找luajit

# export LUAJIT_LIB=/usr/local/lib
# export LUAJIT_INC=/usr/local/include/luajit-2.0
# ./configure --prefix=/usr/local/nginx-1.4.2 --add-module=../lua-nginx-module-0.8.6
# make -j2
# make install

  

3、测试nginx lua

随便找个server,写个helloworld测试样例,然后进行访问,如果页面显示出“hello,lua” 为lua测试通过
location /hello { default_type 'text/plain'; content_by_lua 'ngx.say("hello, lua")'; }

 

4、到达这里的时候,证明nginx安装已经成功,添加配置(重点)

在nginx.conf文件中,http模块下、配置好日志格式

log_format main '$remote_addr | $remote_user | [$time_local] | '
 '"$request" | $status | $body_bytes_sent | '
 '"$http_referer" | "$http_user_agent" | $request_time | '
 '"$request_body" | "$resp_body"';    #resp_body一定要加,否则日志中打印不出来信息


5、上面的日志添加完毕后,去虚拟主机中添加需要返回的值

 

  server {
    listen 80;
    listen 443 ssl;
    server_name srv.niu.com srv-dev.niu.com;
    index index.html index.htm index.php;
    root /data/www/service/public/;

    #只需要添加以下红字内容即可。
    lua_need_request_body on;
    set $resp_body "";
    body_filter_by_lua '
    local resp_body = string.sub(ngx.arg[1], 1, 1000)
    ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
    if ngx.arg[2] then
    ngx.var.resp_body = ngx.ctx.buffered
    end
    ';

    if (!-e $request_filename) {
      rewrite ^/(.*.(js|ico|gif|jpg|png|css|bmp|html|xls)$) /public/$1 last;
      rewrite ^/(.*) /index.php?$1 last;
    }
    location / {
      try_files $uri $uri/ /index.php?$query_string;
    }

  

6、重启nginx,去访问日志中查看访问日志返回值,返回值会类似于下图中的16进制字符格式(0dx08x06x00x00x00pxE2),如果需要解析这种格式,用python decode一下或者找个16进制转换工具就可以了。

172.16.20.13 | - | [16/May/2019:17:52:35 +0800] | "POST /common/files/uploadContentToOSS HTTP/1.1" | 200 | 310 | "https://servicewechat.com/wx52986dc9279f9388/devtools/page-frame.html" | "Mozilla/5.0 (iPh
one; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 wechatdevtools/1.02.1904090 MicroMessenger/6.7.3 Language/zh_CN webview/" | 0.865 | "-
---------------------------433507396236355334617594x0Dx0AContent-Disposition: form-data; name=x22useridx22x0Dx0Ax0Dx0A57f8611b19e28d7474d4f3f3x0Dx0A----------------------------433507396236355334
617594x0Dx0AContent-Disposition: form-data; name=x22contentx22x0Dx0Ax0Dx0Ahttp://tmp/wx52986dc9279f9388.o6zAJs25Q1uDqWAM93bv4s1HO0OU.bjiICvLqpZZL41a49201c8da73b9c7ce9bd2508d3e37.pngx0Dx0A-------
---------------------433507396236355334617594x0Dx0AContent-Disposition: form-data; name=x22filenamex22x0Dx0Ax0Dx0AbjiICvLqpZZL41a49201c8da73b9c7ce9bd2508d3e37.pngx0Dx0A--------------------------
--433507396236355334617594x0Dx0AContent-Disposition: form-data; name=x22filex22; filename=x22wx52986dc9279f9388.o6zAJs25Q1uDqWAM93bv4s1HO0OU.bjiICvLqpZZL41a49201c8da73b9c7ce9bd2508d3e37.pngx22x0Dx
0AContent-Type: image/pngx0Dx0Ax0Dx0Ax89PNGx0Dx0Ax1Ax0Ax00x00x00x0DIHDRx00x00x00dx00x00x00dx08x06x00x00x00pxE2x95Tx00x00x00x01sRGBx00xAExCEx1CxE9x00x00x18yIDATxx01x
EDx9DylxD5xD5xB6xC7wxA1-mx99xC7x22cx01x19DTPTx04x14xBC*x0ExA8qx86x87AxC5{5QxDFM|x9AxA7/7xEFx8Fx97x18cBx8CSx14xFDxE3x1AxBDx8Ax8Ax1A.x82x08<Dx0DxF3xE4x082x0F-xB3x
CC-Sx07xA0}xEBxB3xCAxC2xEDxEFx9DxD3x9ExDFi{xCExB99xDDxC9xEExFExFDxF6xBCxD7wM{xFFxF6x81x8CxAAxAAxAAxCExCExB9xC9x12xC7HxCCx97xD8x18x12Ox81xFD2xE4|x89xCFex08 x9
FxC8xC3xF8xC4xCFxA1qxC4x08x14x98x06 xC5RxD0:BacVxE2)Px02 Ux89x1FxB7qxC4hx14hx12xADxA01?9x14hx04$9tx8F:jZx02Rx5Cx5CxEC^xxE1x05xB7~xFDzWYYx19x958xC9(HK@rrrxDCxA1Cx87
xDCxE7x9Fx7FxEExF6xEDxDBx97x0CxBAGx1D3xEDx00Ax22xCAxCBxCB]x8Fx1E=xDCxF7xDFx7FxEFxD6xAE]xEBxCEx9E=x1Bx95@x89.xC8LxF4x80xC9x1ExEFxE8xD1xA3xEExE3x8F?vyyyxEExD4x
A9Sx0ExF5x05HMx9B6MxF6xD4txFCxB4x03xA4YxB3fxEExF0xE1xC3nxEBxD6xADxAEuxEBxD6xEEx82x0B.px99x99xA9Cx86xB4SYxD8x8FxAE]xBBxBAxA2xA2x22xD7xB7o_x97x95x95x95Rx86=xEDx
00Ax1A.xBAxE8x22xC7~xB8mxDBxB6xAA&Nx9F>x9Dx12xEAx8AIxA4xE5Nx1DxBB1x7FxFE|x87xB4dggxBB!Cx86xB8xFCxFCxD48WM;x099sxE6x8CxAAxA9+xAFxBCxD2x1D?~xDC}xF2xC9'xEExDDwxDFue
ee)!%xA9cxCDx12@x0ExDCxDBexCBx96xB9xB9sxE7xEAxFEcxDBxB6mxAExA4xA4xC4xEDxDExBD[x8DxFBxADxB7xDExEA:uxEAxE4x9A4Ix1Ex9FxA6x15 xB8xB7x9B6mrsfxCFv9xB9xB9xEExF0x91#jx
D0xF1xBCxBExFExFAkx97+yx03x07x0Etx83x06x0DJx1A(xC9cx85x04HDxA4!0xE4YxCDxB2xDDx11xD9x8FTTThx15xF6 xECIxB0+xECxE0x93yx9Cx926x12x

  

 

本文参考至 : https://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_663days.html     感谢作者,在作者的基础上对http模块下的配置文件做了一些变更,因为按照原文是无法展示出日志的。

最后。

如有冒犯随时删除

转载于:https://www.cnblogs.com/howtobuildjenkins/p/10876841.html

最后

以上就是无限店员为你收集整理的nginx访问日志中添加接口返回值的全部内容,希望文章能够帮你解决nginx访问日志中添加接口返回值所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部