因为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. Html 表单表格 form table

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. HIVE- 新建UDF范例

    首先pom文件导入依赖,Hadoop和hive的依赖导入自己机器的版本,hive记得导jdbc <dependency> <groupId>org.apache.hadoop& ...

  3. 图像处理检测方法 — ORB(Oriented FAST and Rotated BRIEF)

    1.FAST  FAST算子的基本原理是:若某像素点与其周围领域内足够多的连续的像素点存在某一属性差异,并且该差异大于指定阈值,则可以断定该像素点与其邻域像素有可被识别的不同之处,可以作为一个特征点( ...

  4. C语言逗号运算符和逗号表达式

    在C语言中逗号","也是一种运算符,称为逗号运算符. 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式.其一般形式为:表达式1,表达式2 其求值过程是分别求两个表达式的 ...

  5. luogu1353 Running

    dp[i][j]表示走i分钟疲劳值为j时的最远距离 然后搞一下就好啦 #include <iostream> #include <cstdio> #include <al ...

  6. POJ1904 King's Quest

    King's Quest Language:Default King's Quest Time Limit: 15000MS Memory Limit: 65536K Total Submission ...

  7. NetScaler VPX在Azure上的部署(二)

    本文是Citrix的工程师协助完成.主要是Citrix的VPX的配置. 导入License   进入NetScaler 中点击管理许可   导入后将有提示,请确认重启.   配置Azure HA 由于 ...

  8. JVM体系结构之五:本地方法栈

    对于一个运行中的Java程序而言,它还可能会用到一些跟本地方法相关的数据区.当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界.本地方法可以通过本地方法接口来访问虚拟机的运行 ...

  9. 使用py 和flask 实现的服务器系统目录浏览,日志文件实时显示到网页的功能

    看日志希望带有彩色,希望从浏览器上看到,不用连到机器上看. 浏览系统的文件夹,scan + 系统文件夹的层级名字当做url路由,可以深层次看到机器上任何层级的文件夹,实现系统文件夹浏览下载. 如果是点 ...

  10. day01_虚拟机与主机之间ip配置

       虚拟机1: centos_ node1 虚拟机2:centos_node2 宿主主机虚拟机ip配置: vmnet1 来自为知笔记(Wiz)