nginx

反向代理可以检测客户端是否提供 X-Request-ID 标头,并将其传递给后端服务器。如果没有提供这样的头,它可以提供随机值。

map $http_x_request_id $reqid {                                                 
    default   $http_x_request_id;                                               
    ""        $request_id;                                                      
}                                                                               

上面的代码将请求 ID 存储在变量 $reqid 中,随后可以在日志中使用它。

log_format trace '$remote_addr - $remote_user [$time_local] "$request" '        
                 '$status $body_bytes_sent "$http_referer" "$http_user_agent" ' 
                 '"$http_x_forwarded_for" $reqid';                              

它也应该传递给后端服务

    location @proxy_to_app {
        proxy_set_header X-Request-ID $reqid;
        proxy_pass   http://backend;
        access_log /var/log/nginx/access_trace.log trace;
    }