我需要在每个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