How does Nginx proxy_pass record response?
某草草
某草草 2017-05-16 17:25:07
0
1
559

Two methods were used to record response logs, but the data in both logs were found to be garbled. It is suspected that the data in the memory was recorded directly. What is the reason?

The first way:

Using the method of master yexiaobai, the source address is as follows:
/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/; } } }

Second way:

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

reply all (1)
我想大声告诉你

Solved, solution:

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])'; }
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!