Yanıt verilerini nginx erişim günlüğüne kaydetmek mümkün müdür?


13

Geliştirme / hata ayıklama amacıyla yanıt verilerini yazdırmaya çalışıyorum. Benzer bir soru ya da bu konuda herhangi bir bilgi bulamadım. Bunu yaparsanız, lütfen bir yorum ekleyin.


Bunun gibi bir şey mi demek istiyorsun? stackoverflow.com/questions/4939382/…
Taylor Jasko

1
Hayır. Bu istek gövdesi ama yanıt gövdesini tükürmek istiyorum. Teşekkürler.
vamsu

Yanıtlar:


11

body_filter_by_luaBir nginx değişkenine istek gövdesi atamak için kullanın , işte bir örnek:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    log_format log_req_resp '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" $request_time req_body:"$request_body" resp_body:"$resp_body"';

    server {
        listen 8082;
        access_log logs/access.log log_req_resp;

        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 / {
            echo "Hello World!";
        }
    }
}

1
Kodda, yanıt yığınından ilk 1000 baytı koyup resp_body içine koyuyoruz, yani bu satırda "resp_body = string.sub (ngx.arg [1], 1, 1000)". Bunun 1000 olması için özel bir nedeni var mı?
Doon

Benim durumumda bana yanıt gövdesi vermiyor ama bana şöyle bir günlük yolu veriyor "resp_body:" "access_log / usr / local / openresty / nginx / logs / access.logupstreamlog" Neyin yanlış olduğunu önerebilir misiniz?
SMT

3

ngx_lua modülünü kullan

bunun gibi

body_filter_by_lua 'ngx.log(ngx.CRIT,ngx.arg[1])';

sağda location


1
Bence kullanmayı tercih ederim ngx.DEBUG. CRIT konsola basılabilir, tüm sysadmin ekibine e-posta ile gönderilebilir ...
Michael Hampton

0

Mesela bunu buldum ve yankı modülünün de yapabileceğini düşünüyorum.


2
Yankı modülü ve sağlanan örnek, istek üstbilgilerini / gövdesini günlüğe kaydetme hakkında konuşur ancak yanıt gövdesini günlüğe kaydetmek istiyorum. Teşekkürler petermolanar.
vamsu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.