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

10

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?

    
por John 07.03.2014 / 03:47

3 respostas

8

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

link

Você pode usar $request_id :

unique request identifier generated from 16 random bytes, in hexadecimal (1.11.0)

    
por 29.06.2016 / 14:01
6

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.

    
por 19.09.2014 / 12:49
1

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

    
por 10.12.2014 / 16:09

Tags