开发笔记📐 发现👽 人物👮 趣闻💦
使用openresty的ngx_lua模块记录nginx服务器日志

使用openresty的ngx_lua模块记录nginx服务器日志
2019-02-10 17:45:58   点击:

openresty是一个打包程序,包含大量的第三方Nginx模块,包括lua。咱们现在主要是使用其中的ngx_lua模块来帮助nginx日志记录response。

OpenResty 依赖库有: perl 5.6.1+, libreadline, libpcre, libssl。

安装openresty

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的日志这个时候已经可以正常记录请求和相应数据了。

openresty nginx 服务器 日志

上一篇:翻译 - 网络安全:攻防入门之SSH暴力破解原理简介
下一篇:第三方CSS也能被用来攻击?所有与安全有关的问题都值得谨慎