因为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. 统计apachelog各访问状态个数(使用MapReduce)

    统计日志文件中各访问状态的个数. 1.将日志数据上传到hdfs 路径 /mapreduce/data/apachelog/in 中 内容如下 ::::::: - - [/Feb/::: +] :::: ...

  2. PHP基于单例模式编写PDO类的方法

    一.单例模式简介 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 二.为什么要使用PHP单例模式? 1.php的应用主要在于数据库应用, 所以一个应用中会存在 ...

  3. 原生JS实现淡入淡出效果(fadeIn/fadeOut/fadeTo)

    淡入淡出效果,在日常项目中经常用到,可惜原生JS没有类似的方法,而有时小的页面并不值得引入一个jQuery库,所以就自己写了一个,已封装, 有用得着的朋友, 可以直接使用. 代码中另附有一个设置元素透 ...

  4. 利用Python进行文章特征提取(二)

    本篇blog是利用Python进行文章特征提取的续篇,主要介绍构建带TF-IDF权重的文章特征向量. In [1]: # 带TF-IDF权重的扩展词库 # 在第一篇文档里 主要是利用词库模型简单判断单 ...

  5. Struts2 - 运行流程分析

    1. 请求发送给 StrutsPrepareAndExecuteFilter 2. StrutsPrepareAndExecuteFilter 询问 ActionMapper: 该请求是否是一个 St ...

  6. ACM学习历程—HDU1023 Train Problem II(递推 && 大数)

    Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know  ...

  7. poj 1208 Web Navigation(堆栈操作)

    一.Description Standard web browsers contain features to move backward and forward among the pages re ...

  8. kubeadm 搭建 K8S集群

    kubeadm是K8s官方推荐的快速搭建K8s集群的方法. 环境: Ubuntu 16.04 1 安装docker Install Docker from Ubuntu’s repositories: ...

  9. hibernate 数据关联多对多

    多对多,必须有一张关系表来维持关系 数据库student,teacher student_teacher 三张表 但是在pojo中只需要建立student和teacher两个类,除非关系表也代表某种业 ...

  10. qtp重定义数组大小

    a dim arr1() ) a  dim arr() ReDim arr(a) arr arr ) arr For each i in arr     print arr(i) Next