openresty是一个打包程序,包含大量的第三方Nginx模块,包括lua。咱们现在主要是使用其中的ngx_lua模块来帮助nginx日志记录response。
OpenResty 依赖库有: perl 5.6.1+, libreadline, libpcre, libssl。
ubuntu/debian:
apt-get install libpcre3-dev \
libssl-dev perl make build-essential curl
其他下载安装方式参考:
http://openresty.org/en/installation.html
配置nginx.conf
worker_processes 1;
access_log /data/log/nginx/xxx.log log4debug;
error_log /data/log/nginx/xxx.log.error;
events {
worker_connections 1024;
}
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"';
access_log logs/access.log main;
upstream bankend {
server 192.168.136.102:9090;
server 192.168.136.103:9090;
}
server {
listen 8000;
server_name localhost;
set $resp_body "";
location / {
proxy_pass http://bankend;
lua_need_request_body on;
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
';
}
}
}
注意:对应的Log目录需要提前创建Logs目录并给予权限。
启动nginx后,发送请求,nginx的日志这个时候已经可以正常记录请求和相应数据了。