Wie zeichnet Nginx-Proxy_pass die Antwort auf?
某草草
某草草 2017-05-16 17:25:07
0
1
640

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/;
}
某草草
某草草

Antworte allen(1)
我想大声告诉你

已解决,解决方案:

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])';
}
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage