haproxy 可以记录未知的标头吗?

haproxy 可以记录未知的标头吗?

我需要看看全部某些请求的标头。我一直在阅读 haproxy 手册,我能够使用捕获来记录我知道的任何标头。

但我想查看应用程序收到的所有我不知道的标头。使用 haproxy 的日志记录选项可以实现这一点吗?某种正则表达式或迭代方法?

我正在使用 haproxy 1.6

谢谢。

答案1

尝试使用(在 /etc/haproxy/haproxy.cfg 中):

frontend my_frontend
  mode http
  option httplog
  http-request capture req.hdrs len 512
  log-format "%ci:%cp [%tr] %ft [[%hr]] %hs %{+Q}r"

req.hdrs- 以字符串形式返回当前请求标头,包括将标头与请求主体分隔开的最后一行空行
%hr- 打印捕获的请求标头

希望这可以帮助。

答案2

您使用以下方式记录已知标头capture request header指令,但 HAproxy 1.6 引入了一条新指令,即http-request capture句法。

http-request capture <sample> [ len <length> | id <id> ]:从请求缓冲区
捕获示例表达式<sample>,并将其转换为最多包含 100 个<len>字符的字符串。生成的字符串存储在下一个请求“捕获”槽中,因此它可能出现在某些捕获的 HTTP 标头旁边。然后它将自动出现在日志中,并且可以使用示例提取规则提取它以将其输入到标头或任何其他内容中。长度应该受到限制,因为将在整个会话生命周期内为每次捕获分配此大小。有关更多信息,请查看第 7.3 节(获取示例)和“捕获请求标头”。

我认为你可以配置使用正则表达式作为<sample>

相关内容