Existe-t-il un moyen de consigner un identifiant unique par demande pour nginx?

12

Il semble y avoir quelques modules tiers pour cette

Cependant, si possible, je ne veux pas reconstruire nginx, ce qui, je crois, est une condition requise pour utiliser ces deux modules. Mon premier essai a été d'utiliser $msecavec $pidmais cela n'a pas fonctionné (j'avais un processus qui servait deux requêtes à la même milliseconde). J'ai lu $connectionet il semble que cela fonctionnerait en conjonction avec $msec. Est-ce que cela fonctionnera ou y a-t-il un meilleur moyen sans utiliser de modules tiers?

John
la source

Réponses:

10

Mise à jour pour la version v1.11 de nginx (mai 2016):

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

Vous pouvez utiliser $request_id:

identifiant de requête unique généré à partir de 16 octets aléatoires, en hexadécimal (1.11.0)

user5994461
la source
Pour l'ancienne version (<= 1.2.7), vous pouvez utiliser quelque chose comme "$ pid- $ date_local" qui devrait être suffisamment unique pour la plupart des utilisations.
Bactisme
6

Vous pouvez utiliser nginx-extraset utiliser Perl ou Lua intégré.

$ sudo apt-get install libossp-uuid-perl

Dans votre configuration nginx:

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

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

Et puis pour une donnée location:

proxy_set_header Request-Id $request_uuid

Nous l'utilisons en production et sommes très satisfaits du meilleur suivi que nous avons à travers nos services backend.

jabley
la source