Atualização para o nginx versão v1.11 (maio de 2016):
Você pode usar $request_id
:
unique request identifier generated from 16 random bytes, in hexadecimal (1.11.0)
Parece haver alguns módulos de terceiros para isso
No entanto, se possível, não quero recriar o nginx, que, na minha opinião, é um requisito para usar esses dois módulos. Minha tentativa inicial era usar $msec
com $pid
, mas isso não funcionou (um processo atendeu a duas solicitações no mesmo milissegundo). Eu li sobre $connection
e parece que isso funcionaria em conjunto com $msec
. Isso funcionará ou existe uma maneira melhor sem usar módulos de terceiros?
Atualização para o nginx versão v1.11 (maio de 2016):
Você pode usar $request_id
:
unique request identifier generated from 16 random bytes, in hexadecimal (1.11.0)
Você pode usar nginx-extras
e usar o Perl ou Lua incorporado.
$ sudo apt-get install libossp-uuid-perl
Na sua configuração do nginx:
perl_require "Data/UUID.pm";
perl_set $request_uuid 'sub {
my $ug = new Data::UUID;
return $ug->create_str();
}';
E, em seguida, por um determinado location
:
proxy_set_header Request-Id $request_uuid
Estamos a utilizar isto em produção e Estamos muito felizes com o melhor rastreamento que temos em nossos serviços de back-end.
Se você puder usar nginx-extras ou perl no nginx.
Em seguida, você pode definir a variável de solicitação usando perl_set
perl_set $uuid 'sub {
return join "", map{(a..z,A..Z,0..9)[rand 62]} 0..7;
}';
Se precisar de mais detalhes: link