将UUID添加到Nginx日志

我需要在每个Nginx日志行上有唯一的标识符。 有没有简单的方法来添加这个?

谢谢!

如果可以从nginxvariables中组装一个UUID,则可以使用log_format将其添加到日志中。

一种常见的方法是添加一个带有UUID的HTTP头,并将其捕获到nginx(它将所有头文件公开为$http_<header_name>variables)以添加到自定义日志格式。

$connectionvariables包含连接标识符。 这不是全球唯一的,我想它会在Nginx重启后从0开始。 但重启之间应该是唯一的。

要么升级到nginx> = 1.11,它支持$request_idvariables。

或者对于旧版本,您可以在nginx.conf (或conf.d/uuid.conf )的http部分中使用Perl模块来生成UUID:

 perl_require "Data/UUID.pm"; perl_set $request_id 'sub { my $ug = new Data::UUID; return $ug->create_str(); }'; 

在Debian上,你需要nginx-extra包( nginx-extra Perl脚本)和libossp-uuid-perl

 sudo apt install nginx-extra libossp-uuid-perl 

然后,您可以附加$request_id来logging或设置HTTP标头:

 proxy_set_header Request-Id $request_id