Existe uma maneira de registrar um ID exclusivo por solicitação para o nginx?

12

Parece haver alguns módulos de terceiros para esse

No entanto, se possível, não quero reconstruir o nginx, o que acredito ser um requisito para usar esses dois módulos. Minha tentativa inicial foi usar $msecno $pidentanto que não deu certo (eu tive um processo para atender a duas solicitações no mesmo milissegundo). Eu li sobre $connectione parece que isso funcionaria em conjunto com $msec. Isso funcionará ou existe uma maneira melhor sem o uso de módulos de terceiros?

John
fonte

Respostas:

10

Atualização para a versão nginx v1.11 (maio de 2016):

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

Você pode usar $request_id:

identificador de solicitação exclusivo gerado a partir de 16 bytes aleatórios, em hexadecimal (1.11.0)

user5994461
fonte
Para a versão antiga (<= 1.2.7), você pode usar algo como "$ pid- $ date_local", que deve ser único o suficiente para a maioria dos usos.
Bactisme
6

Você pode usar nginx-extrase usar Perl ou Lua incorporado.

$ sudo apt-get install libossp-uuid-perl

Na sua configuração nginx:

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

    my $ug = new Data::UUID;
   return $ug->create_str();
}';

E então, para um dado location:

proxy_set_header Request-Id $request_uuid

Estamos usando isso na produção e estamos muito felizes com o melhor rastreamento que temos em nossos serviços de back-end.

jabley
fonte