Add the requested response log to the nginx log

不言
Release: 2023-03-25 12:34:01
Original
2637 people have browsed it

This article mainly introduces the response log of adding requests in the nginx log. It is very good and has reference value. Friends who need it can refer to it.

Since this function is not included in the built-in function of nginx, it is required. Install the third-party module ngx_lua. Since this module requires Lua language, you need to install the corresponding Lua language package

1. Download and install 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
Copy after login

The following content appears, indicating successful compilation

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

The following content appears, indicating successful installation

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

2. Download and prepare nginx lua module

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

3. Install 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
Copy after login

##4. Test whether the installation is successful

# cd /usr/local/nginx-1.4.2/conf/
# vi nginx.conf
Copy after login

lua command method

Add a localtion in the server

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

Then start nginx

# cd /usr/local/nginx-1.4.2/sbin
# ./nginx
Copy after login

Browser access:

http://127.0.0.1/hello

Display: hello, lua

Notes:

1. Pay attention to the installation directory of each module without errors

2. If you have passed apt- nginx is installed by get method, you need to delete nginx first, because the software downloaded by this method cannot be compiled

3.

This means that the third-party installation is successful,

5. Start adding the log below

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;
   }
 }
}
Copy after login

The response log has been successfully added.

If you know Lua language, you can modify the following code to better meet your requirements.

  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
  ';
Copy after login

When the log is output, you will find that when the language response result involves Chinese characters, they are converted to hexadecimal and cannot be recognized.

Part of the response log is as follows:

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: {}}


Can be solved by copying to python script.

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'))
Copy after login

The input result is:

{"code": 404, "message": "The requested resource does not exist" , "data": {}}

The above is the detailed content of Add the requested response log to the nginx log. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template