1http { 2 log_format log_req_resp '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' "$http_referer" "$http_user_agent" $http_x_real_ip $http_x_forwarded_for $request_time $content_type $host $http_authorization $http_x_sdk_date $http_x_sdk_content_sha256 '"$http_referer" "$http_user_agent" $request_time req_body:"$request_body"' ' resp_body:"$resp_body" resp_header:"$resp_header"'; 3 log_format log_req_resp '$remote_addr | $http_x_real_ip | $http_x_forwarded_for ' '"$request" $status' "$http_referer" "$http_user_agent" $request_time $content_type $host 'resp_header:"$resp_header"'; 4 server { 5 access_log logs/access.log log_req_resp; 6 set $req_header ""; 7 set $resp_header ""; 8header_filter_by_lua ' 9 local h = ngx.resp.get_headers() 10 for k, v in pairs(h) do 11 if type(v) == "table" then 12 for k, vv in pairs(v) do 13 ngx.var.resp_header = ngx.var.resp_header..k..": "..vv; 14 end 15 else 16 ngx.var.resp_header = ngx.var.resp_header..k..": "..v; 17 end 18 end 19'; 20set $resp_body ""; 21body_filter_by_lua ' 22 local resp_body = string.sub(ngx.arg[1], 1, 1000) 23 ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body 24 if ngx.arg[2] then 25 ngx.var.resp_body = ngx.ctx.buffered 26 end 27'; 28 } 29 }
注意自定义响应头通过使用http_开头即可。
反向代理增加请求头
1location /some/path/ { 2 proxy_set_header Host $host; 3 proxy_set_header X-Real-IP $remote_addr; 4 proxy_pass http://localhost:8000; 5}