Heim  >  Fragen und Antworten  >  Hauptteil

Wie zeichnet Nginx-Proxy_pass die Antwort auf?

Es wurden zwei Methoden zum Aufzeichnen von Antwortprotokollen verwendet, es wurde jedoch festgestellt, dass die Daten in beiden Protokollen verstümmelt waren. Es wird vermutet, dass die Daten im Speicher direkt aufgezeichnet wurden.

Der erste Weg:

Unter Verwendung der Master-Yexiaobai-Methode lautet die Quelladresse wie folgt:
/blog/yexiaobai/1190000000606867

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       8088;
    server_name  localhost;
    access_log /tmp/nginx.resp.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 / {
        proxy_pass http://173.194.14.40/;
    }
    }
}

Der zweite Weg:

location /test {
    content_by_lua '
        -- res = ngx.location.capture("http://173.194.14.57/")
        local res = ngx.location.capture("/", { share_all_vars = true })
        file = io.open("/tmp/capture.log", "a+")
        file:write(res.body)
        file:close()
        -- ngx.var.resp_body = res.body
        ngx.print(res_s)
';

}

location / {
    proxy_pass http://173.194.14.40/;
}
某草草某草草2713 Tage vor616

Antworte allen(1)Ich werde antworten

  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:27:07

    已解决,解决方案:

    error_log /tmp/nginx.resp.info.log info;
    
    location / {
        proxy_pass http://vpsea.flvcd.com/;
        body_filter_by_lua 'ngx.log(ngx.INFO, ngx.arg[1])';
    }
    

    Antwort
    0
  • StornierenAntwort