有没有一种方法可以为nginx记录每个请求的唯一ID?

这个似乎有几个第三方模块可以用来解决这个问题。 然而,如果可能的话,我不想重新构建nginx,我相信这是使用这两个模块的要求。我的初始尝试是使用$msec$pid,但是那并没有成功(我有一个进程在同一毫秒内处理了两个请求)。我已经阅读了关于$connection的资料,似乎它可以与$msec配合使用。这样会起作用吗?还是有其他更好的方法,而不使用第三方模块?
3个回答


对于旧版本(<= 1.2.7),你可以使用类似"$pid-$date_local"这样的方式,这在大多数情况下足够唯一。 - Bactisme

你可以使用`nginx-extras`并使用嵌入的Perl或Lua。 在你的nginx配置中:
perl_require "Data/UUID.pm";
perl_set $request_uuid 'sub {

    my $ug = new Data::UUID;
   return $ug->create_str();
}';
然后对于给定的位置
proxy_set_header Request-Id $request_uuid
我们在生产中使用this in production,对我们在后端服务上获得更好的追踪非常满意。