因为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访问日志中添加接口返回值的更多相关文章

  1. 使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页

    使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页 方法1:linux下使用awk命令 # cat access1.log | awk '{print $1" &q ...

  2. nginx访问日志中的时间格式修改

    1.说明 默认的时间格式是:[08/Mar/2013:09:30:58 +0800],由$time_local变量表示. 我想要改成如下格式:2013-03-08 12:21:03. 2.需要修改的文 ...

  3. 查询nginx访问日志中访问次数最多的前10个IP地址

    cat log | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | awk '{print $0}' | head -n 10

  4. nginx日志中添加请求的response日志

    换个新公司,做一些新鲜的事情,经过一天的琢磨,终于成功添加response日志 在nginx的日志中添加接口response的日志 由于此功能在nginx内置的功能中没有,需要安装第三方模块ngx_l ...

  5. 采集并分析Nginx访问日志

    日志服务支持通过数据接入向导配置采集Nginx日志,并自动创建索引和Nginx日志仪表盘,帮助您快速采集并分析Nginx日志. 许多个人站长选取了Nginx作为服务器搭建网站,在对网站访问情况进行分析 ...

  6. Python正则表达式,统计分析nginx访问日志

    目标: 1.正则表达式 2.oop编程,统计nginx访问日志中不同IP地址出现的次数并排序 1.正则表达式 #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  7. 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用枚举?

    在阅读<阿里巴巴Java开发手册>时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下: 在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内 ...

  8. Nginx 访问日志配置

    一.Nginx 访问日志介绍 Nginx 软件会把每个用户访问网站的日志信息记录到指定的日志文件里,供网站提供者分析用户的浏览行为等,此功能由 ngx_http_log_module 模块负责. 二. ...

  9. nginx访问日志(access_log)

    一.nginx访问日志介绍 nginx软件会把每个用户访问网站的日志信息记录到指定的日志文件里,供网站提供者分析用户的浏览行为等,此功能由ngx_http_log_module模块负责,对应的官方地址 ...

随机推荐

  1. CSS3制作分步注册表单

    这个DEMO是使用CSS3制作的一个分步注册表单,每个input对应的是每一步,在表单得到焦点时,对应的step也会进行对应的改变.不过这个效果是使用js代码来实现,但整个表单的外观是由CSS3来完成 ...

  2. 2017各银行贷款利息表及P2P平台贷款利率比较

    银行贷款利息是多少?2017各银行贷款利息表及P2P平台贷款利率比较 发表时间: 2017-02-17 作者: 一.2017央行贷款基准率 各个银行的贷款利率是以中国银行的人民币贷款基准率为标准进行上 ...

  3. php mysqli_get_server_version()函数

    php mysqli_get_server_version()函数以整数形式返回MySQL服务器版本. 本文章想大家介绍mysqli_get_server_version 函数的基本使用方法和实例,需 ...

  4. 使用jquery执行ajax

    $.ajax():返回其创建的XMLHttpRequest对象 回调函数:如果要处理$.ajax()得到的数据,则应该使用回调函数!beforeSend:在发送请求之后调用,需要一个XMLHttpRe ...

  5. 关于Windows与Linux下32位与64位开发中的数据类型长度的一点汇总

    32位与64位的数据类型长度是不一样的,而且windows和linux也有些许区别,下面把64位下的数据长度列表如下(无符号unsigned和有符号的长度一样): linux64            ...

  6. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  7. Cannot resolve class or package 'springframework' less... (Ctrl+F1) Inspection info:Spring XML mode

    其实这个问题是由于MySQL 这个jar 包依赖类型默认是runtime ,也就是说只有运行时生效,所以虽然这里报错,但是不影响你代码运行. 解决方案: 将runtime 修改为Compile 即可 ...

  8. cs2008中头文件交叉编译的问题

    使用全局变量 使用基类指针定义在头文件中,在实际使用中强制转型为需要的指针,当然应该也可以存为空指针.

  9. Poj1062 昂贵的聘礼 (dijkstra算法)

    一.Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长 ...

  10. Python:正则表达式(三)*、+、?的用法

    一.功能*——表示匹配前面的字符0个或多个:+——表示前面的字符1个或多个:?——(1)放在其他字符后面:表示匹配0次或1次: (2)放在*.+后面:表示匹配尽可能少的字符 二.例 字符串fooooo ...