• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    nginx日志中添加请求的response日志(推荐)

    由于此功能在nginx内置的功能中没有,需要安装第三方模块ngx_lua,由于此模块需要Lua语言,所以需要安装相应的Lua语言包

    1. 下载安装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

    出现如下内容表示编译成功

    OK  Successfully built LuaJIT
    make[1]: Leaving directory `/usr/local/src/LuaJIT-2.0.2/src'
    ==== Successfully built LuaJIT 2.0.2 ====
    # make install

    出现如下内容,表示安装成功

    ==== Successfully installed LuaJIT 2.0.2 to /usr/local ====

    2. 下载准备nginx lua模块

    # cd /usr/local/src
    # wget https://github.com/chaoslawful/lua-nginx-module/archive/v0.8.6.tar.gz
    # tar -xzvf v0.8.6

    3. 安装nginx

    # cd /usr/local/src/
    # wget http://nginx.org/download/nginx-1.4.2.tar.gz
    # 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

    4.测试安装是否成功

    # cd /usr/local/nginx-1.4.2/conf/
    # vi nginx.conf

    lua指令方式

    在server 中添加一个localtion

    location /hello {
       default_type 'text/plain';
       content_by_lua 'ngx.say("hello, lua")';
      }

    然后启动nginx

    # cd /usr/local/nginx-1.4.2/sbin
    # ./nginx

    浏览器访问:

    http://127.0.0.1/hello

    显示:hello, lua

    注意点:

    1.注意每个模块的安装目录不能出现差错

    2.如果之前通过apt-get方式安装了nginx,需要先删除nginx,因为此方式下载的软件无法编译

    3.

    到此说明第三方安装成功,

    5.下面开始添加日志

    http {
     log_format mylog 'response_body:$resp_body';
    
     server {
      #记录nginx请求返回值
      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
      ';
         
      location / {
       proxy_pass http://127.0.0.1:5000;
       access_log /var/log/nginx/access.log mylog;
       }
     }
    }

    到此便成功添加response日志。

    如果懂Lua语言的,可以对如下代码进行修改,来更加符合自己的要求。

      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
      ';

    日志输出时,会发现语言响应结果涉及到字符汉字的时候转为16进制导致无法识别。

    部分响应日志如下:

    response_body:    {\x22code\x22: 404, \x22message\x22: \x22\xE8\xAF\xB7\xE6\xB1\x82\xE7\x9A\x84\xE8\xB5\x84\xE6\xBA\x90\xE4\xB8\x8D\xE5\xAD\x98\xE5\x9C\xA8\x22, \x22data\x22: {}}

    可通过复制到python脚本进行解决。

    str1='''
    {\x22code\x22: 404, \x22message\x22: \x22\xE8\xAF\xB7\xE6\xB1\x82\xE7\x9A\x84\xE8\xB5\x84\xE6\xBA\x90\xE4\xB8\x8D\xE5\xAD\x98\xE5\x9C\xA8\x22, \x22data\x22: {}}
    '''
    print(str1.encode('raw_unicode_escape').decode('utf-8'))

    输入结果为:

    {"code": 404, "message": "请求的资源不存在", "data": {}}

    总结

    以上所述是小编给大家介绍的nginx日志中添加请求的response日志,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    上一篇:CentOS环境下安装PHPUnit的方法分析
    下一篇:ubuntu18.04安装搜狗拼音的简易教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    nginx日志中添加请求的response日志(推荐) nginx,日志,中,添加,请求,