Есть ли способ зарегистрировать уникальный идентификатор для каждого запроса для nginx?


12

Похоже, есть пара сторонних модулей для этого

Однако, если возможно, я не хочу перестраивать nginx, что, как я считаю, является обязательным условием для использования обоих этих модулей. Моя первая попытка была использовать $msecс , $pidоднако , что не получилось ( у меня был процесс обслуживать два запроса на одной и той же миллисекунды). Я читал о, $connectionи кажется, что это будет работать в сочетании с $msec. Будет ли это работать или есть лучший способ без использования сторонних модулей?

Ответы:


10

Обновление для версии nginx v1.11 (май 2016 г.):

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

Вы можете использовать $request_id:

уникальный идентификатор запроса, сгенерированный из 16 случайных байтов в шестнадцатеричном формате (1.11.0)


Для старой версии (<= 1.2.7) вы можете использовать что-то вроде «$ pid- $ date_local», которое должно быть достаточно уникальным для большинства случаев использования.
Bactisme

6

Вы можете использовать nginx-extrasи использовать встроенный Perl или Lua.

$ sudo apt-get install libossp-uuid-perl

В вашей конфигурации nginx:

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

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

И тогда для данного location:

proxy_set_header Request-Id $request_uuid

Мы используем это в производстве и очень довольны лучшим отслеживанием, которое мы имеем через наши внутренние сервисы.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.