nginx docker 日志打印请求和响应

下载nginx-lua

bash 复制代码
docker pull fabiocicerchia/nginx-lua

编写配置文件

主要是lua代码的编写,用来获取响应体。

nginx

bash 复制代码
user  nginx;
worker_processes  auto;

error_log  /dev/stdout;
#error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    log_format my escape=json ''
'{ "timestamp": "$time_iso8601″, '
'"remote_addr": "$remote_addr",'
'"remote_port":"$remote_port",'
'"costime": "$request_time",'
'"status": "$status",'
'"request_method":"$request_method",'
'"request_uri":"$request_uri",'
'"request_body":$request_body,'
'"response_body":$resp_body,'
'"agent": "$http_user_agent" }'
'';

    #access_log  off;
    access_log  /dev/stdout my;
    #access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

default.conf

bash 复制代码
server {
    listen       20000;
    server_name  localhost;

    #记录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
    ';

    #access_log  /var/log/nginx/host.access.log  main;

    # 验证lua
    location /hello {
        default_type 'text/plain';
        content_by_lua 'ngx.say("你好, lua")';
    }

    location /20001/ {
        proxy_pass http://192.168.2.5:20001/;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }

    location /20002/ {
        proxy_pass http://192.168.2.5:20002/;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }

    location /20003/ {
        proxy_pass http://192.168.2.5:20003/;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }

    location /20005/ {
        proxy_pass http://192.168.2.5:20005/;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection upgrade;
        proxy_set_header Accept-Encoding gzip;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

运行

bash 复制代码
docker run  --rm  -it  -p 20000:20000 -v /root/app/tmp/nginx.conf:/etc/nginx/nginx.conf -v /root/app/tmp/default.conf:/etc/nginx/conf.d/default.conf  fabiocicerchia/nginx-lua

验证

bash 复制代码
curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' http://localhost:20000/hello
相关推荐
LI JS@你猜啊11 分钟前
【本地搭建项目运行服务器 + 免费公网地址映射 + Docker】
运维·服务器·docker
Wpa.wk12 分钟前
Docker原理和使用场景(网络模式和分布式UI自动化环境部署)
linux·经验分享·分布式·测试工具·docker·性能监控
等什么君!18 分钟前
练习-部署nginx和部署tomcat
运维·nginx·docker
约定Da于配置31 分钟前
Docker 配置了阿里云镜像加速依然拉取不了的问题
阿里云·docker·容器
AlfredZhao10 小时前
Docker 快速入门:手把手教你打包 Python 应用
linux·docker·podman
学习3人组12 小时前
Docker 容器内文件↔本地双向复制备份
运维·docker·容器
学习3人组15 小时前
Docker 从本地Label-studio导入 tar 镜像包
运维·docker·容器
羑悻的小杀马特16 小时前
Docker-Android 容器化 + cpolar 穿透,完善异地调试
android·运维·docker·容器·cpolar
lpfasd12316 小时前
Docker 使用注意事项:从磁盘爆满到安全实践的完整避坑指南
安全·docker·容器
勇气要爆发18 小时前
Docker+Ollama+LangChain:从零搭建企业级“隐私优先”本地 RAG 知识库 (附源码)
docker·容器·langchain·lora·rag·ollama·llama 3