因为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进制字符格式(0d\x08\x06\x00\x00\x00p\xE2\),如果需要解析这种格式,用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 | "- ---------------------------433507396236355334617594\x0D\x0AContent-Disposition: form-data; name=\x22userid\x22\x0D\x0A\x0D\x0A57f8611b19e28d7474d4f3f3\x0D\x0A----------------------------433507396236355334 617594\x0D\x0AContent-Disposition: form-data; name=\x22content\x22\x0D\x0A\x0D\x0Ahttp://tmp/wx52986dc9279f9388.o6zAJs25Q1uDqWAM93bv4s1HO0OU.bjiICvLqpZZL41a49201c8da73b9c7ce9bd2508d3e37.png\x0D\x0A------- ---------------------433507396236355334617594\x0D\x0AContent-Disposition: form-data; name=\x22filename\x22\x0D\x0A\x0D\x0AbjiICvLqpZZL41a49201c8da73b9c7ce9bd2508d3e37.png\x0D\x0A-------------------------- --433507396236355334617594\x0D\x0AContent-Disposition: form-data; name=\x22file\x22; filename=\x22wx52986dc9279f9388.o6zAJs25Q1uDqWAM93bv4s1HO0OU.bjiICvLqpZZL41a49201c8da73b9c7ce9bd2508d3e37.png\x22\x0D\x 0AContent-Type: image/png\x0D\x0A\x0D\x0A\x89PNG\x0D\x0A\x1A\x0A\x00\x00\x00\x0DIHDR\x00\x00\x00d\x00\x00\x00d\x08\x06\x00\x00\x00p\xE2\x95T\x00\x00\x00\x01sRGB\x00\xAE\xCE\x1C\xE9\x00\x00\x18yIDATx\x01\x ED\x9Dyl\xD5\xD5\xB6\xC7w\xA1-m\x99\xC7\x22c\x01\x19DTPT\x04\x14\xBC*\x0E\xA8q\x86\x87A\xC5{5Q\xDFM|\x9A\xA7/7\xEF\x8F\x97\x18cB\x8CS\x14\xFD\xE3\x1A\xBD\x8A\x8A\x1A.\x82\x08<D\x0D\xF3\xE4\x082\x0F-\xB3\x CC-S\x07\xA0}\xEB\xB3\xCA\xC2\xED\xEF\x9D\xD3\x9E\xDFi{\xCE\xB99\xDD\xC9\xEE\xFE\xFD\xF6\xBC\xD7wM{\xFF\xF6\x81\x8C\xAA\xAA\xAA\xCE\xCE\xB9\xC9\x12\xC7H\xCC\x97\xD8\x18\x12O\x81\xFD2\xE4|\x89\xCFe\x08 \x9 F\xC8\xC3\xF8\xC4\xCF\xA1q\xC4\x08\x14\x98\x06 \xC5R\xD0:BacV\xE2)P\x02 U\x89\x1F\xB7q\xC4h\x14h\x12\xAD\xA01?9\x14h\x04$9t\x8F:jZ\x02R\x5C\x5C\xEC^x\xE1\x05\xB7~\xFDzWYY\x19\x958\xC9(HK@rrr\xDC\xA1C\x87\ xDC\xE7\x9F\x7F\xEE\xF6\xED\xDB\x97\x0C\xBAG\x1D3\xED\x00A\x22\xCA\xCB\xCB]\x8F\x1E=\xDC\xF7\xDF\x7F\xEF\xD6\xAE]\xEB\xCE\x9E=\x1B\x95@\x89.\xC8L\xF4\x80\xC9\x1E\xEF\xE8\xD1\xA3\xEE\xE3\x8F?vyyy\xEE\xD4\x A9S\x0E\xF5\x05HM\x9B6M\xF6\xD4t\xFC\xB4\x03\xA4Y\xB3f\xEE\xF0\xE1\xC3n\xEB\xD6\xAD\xAEu\xEB\xD6\xEE\x82\x0B.p\x99\x99\xA9C\x86\xB4SY\xD8\x8F\xAE]\xBB\xBA\xA2\xA2\x22\xD7\xB7o_\x97\x95\x95\x95R\x86=\xED\x 00A\x1A.\xBA\xE8\x22\xC7~\xB8m\xDB\xB6\xAA&N\x9F>\x9D\x12\xEA\x8AI\xA4\xE5N\x1D\xBB1\x7F\xFE|\x87\xB4dgg\xBB!C\x86\xB8\xFC\xFC\xD48WM;\x099s\xE6\x8C\xAA\xA9+\xAF\xBC\xD2\x1D?~\xDC}\xF2\xC9'\xEE\xDDw\xDFue ee)!%\xA9c\xCD\x12@\x0E\xDC\xDBe\xCB\x96\xB9\xB9s\xE7\xEA\xFEc\xDB\xB6m\xAE\xA4\xA4\xC4\xED\xDE\xBD[\x8D\xFB\xAD\xB7\xDE\xEA:u\xEA\xE4\x9A4I\x1E\x9F\xA6\x15 \xB8\xB7\x9B6mrsf\xCFv9\xB9\xB9\xEE\xF0\x91#j\x D0\xF1\xBC\xBE\xFE\xFAk\x97+y\x03\x07\x0Et\x83\x06\x0DJ\x1A(\xC9c\x85\x04HD\xA4!0\xE4Y\xCD\xB2\xDD\x11\xD9\x8FTTTh\x15\xF6 \xECI\xB0+\xEC\xE0\x93y\x9C\x926\x12\x
本文参考至 : https://www.cnblogs.com/rgcLOVEyaya/p/RGC_LOVE_YAYA_663days.html 感谢作者,在作者的基础上对http模块下的配置文件做了一些变更,因为按照原文是无法展示出日志的。
最后。
如有冒犯随时删除
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx访问日志中添加接口返回值 - Python技术站