Czy istnieje sposób na zalogowanie unikalnego identyfikatora na żądanie dla Nginx?

12

Wydaje się, że jest do tego kilka modułów innych firm

Jednak jeśli to możliwe, nie chcę odbudowywać nginx, co moim zdaniem jest wymogiem użycia obu tych modułów. Moją pierwszą próbą było użycie $msecz $pidtym, co jednak nie wyszło (miałem proces obsługi dwóch żądań w tej samej milisekundie). Czytałem o $connectioni wydaje się, że to działałoby w połączeniu z $msec. Czy to zadziała, czy jest lepszy sposób bez użycia modułów innych firm?

Jan
źródło

Odpowiedzi:

10

Aktualizacja dla wersji Nginx v1.11 (maj 2016):

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

Możesz użyć $request_id:

unikalny identyfikator żądania wygenerowany z 16 losowych bajtów, w systemie szesnastkowym (1.11.0)

użytkownik5994461
źródło
W starej wersji (<= 1.2.7) możesz użyć czegoś takiego jak „$ pid- $ date_local”, który powinien być wystarczająco unikalny dla większości zastosowań.
Bactisme
6

Możesz używać nginx-extrasi używać osadzonego Perla lub Lua.

$ sudo apt-get install libossp-uuid-perl

W twojej konfiguracji nginx:

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

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

A potem dla danego location:

proxy_set_header Request-Id $request_uuid

Używamy tego w produkcji i jesteśmy bardzo zadowoleni z lepszego śledzenia, jakie mamy w naszych usługach zaplecza.

jabley
źródło