我喜欢X-Request-ID
:
Heroku 路由器会为收到的每个传入 HTTP 请求生成一个唯一的请求 ID。然后,此唯一 ID 将作为名为 X-Request-ID 的 HTTP 标头传递给您的应用程序。
从https://devcenter.heroku.com/articles/http-request-id
X-Request-ID
即使使用了多线程 MPM,我该如何配置 Apache 来提供不同的功能?
答案1
你需要做两件事:
加载唯一 ID 模块。这提供了用于此目的的 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 记录它(可能除了在您的应用程序内)。
答案2
您可能希望对标头的 %{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