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 ответа

Вам нужно сделать две вещи:

  1. Загрузите уникальный_ид_модуль. Это обеспечивает переменную среды UNIQUE_ID, которая служит этой цели.

    LoadModule mod_unique_id.c
    
  2. Скопируйте 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
Другие вопросы по тегам