有没有办法为nginx记录每个请求的唯一ID?

Joh*_*ohn 13 ubuntu nginx

似乎有几个第三方模块用于此

但是,如果可能的话,我不想重建 nginx,我相信这是使用这两个模块的必要条件。我最初的尝试是使用$msecwith$pid但是没有成功(我有一个进程在同一毫秒内处理两个请求)。我读过关于$connection它似乎可以与$msec. 这会起作用还是有更好的方法而不使用第三方模块?

use*_*461 11

nginx 版本 v1.11(2016 年 5 月)的更新:

http://nginx.org/en/docs/http/ngx_http_core_module.html#var_request_id

您可以使用$request_id

从 16 个随机字节生成的唯一请求标识符,十六进制 (1.11.0)


jab*_*ley 6

您可以使用nginx-extras嵌入式 Perl 或 Lua。

$ sudo apt-get install libossp-uuid-perl

在您的 nginx 配置中:

perl_require "Data/UUID.pm";
perl_set $request_uuid 'sub {

    my $ug = new Data::UUID;
   return $ug->create_str();
}';
Run Code Online (Sandbox Code Playgroud)

然后对于给定的location

proxy_set_header Request-Id $request_uuid
Run Code Online (Sandbox Code Playgroud)

我们正在生产中使用它,并且对我们在后端服务中拥有的更好的跟踪感到非常满意。