Apache: X-Request-ID, как в Heroku
Мне нравится X-Request-ID
:
Маршрутизатор Heroku генерирует уникальный идентификатор запроса для каждого входящего HTTP-запроса, который он получает. Этот уникальный идентификатор затем передается вашему приложению в виде заголовка HTTP, называемого X-Request-ID.
С https://devcenter.heroku.com/articles/http-request-id
Как я могу настроить Apache для предоставления X-Request-ID
что отличается, даже если многопоточный MPM используется?
2 ответа
Вам нужно сделать две вещи:
Загрузите уникальный_ид_модуль. Это обеспечивает переменную среды UNIQUE_ID, которая служит этой цели.
LoadModule mod_unique_id.c
Скопируйте UNIQUE_ID в
X-Request-ID
заголовок в соответствующем виртуальном хосте, используяRequestHeader
директивы.RequestHeader setifempty X-Request-ID %{UNIQUE_ID}e ProxyPass ... ProxyPassReverse ...
При желании вы также можете поставить %{UNIQUE_ID}e
в пользовательский формат журнала, чтобы вы могли войти из Apache (возможно, в дополнение к вашему приложению).
Возможно, вы захотите экранировать значение %{UNIQUE_ID}e для заголовка. В этой статье это описано как первый пример:https://httpd.apache.org/docs/trunk/env.html#examples.
#
# The following works around a client sending a broken Accept_Encoding
# header.
#
SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding