我正在解决 haproxy 设置上日志格式的一些问题。首先,我有多个代理设置,这意味着:
请求 -> 客户端代理 -> 中间代理 -> 应用程序
关于客户端代理上的这一点,我添加:
唯一 id 标头 X 唯一 ID
该值在日志中表示为:
日志格式 %ci:%cp\ [%t]\ %f\ %b/%s\ %Tq/%Tw/%Tc/%Tr/%Tt\ %ST\ %B\ %CC\ %CS\ %tsc\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ {%hrl}\ {%hsl}\ %{+Q}r\ {%ID}
这太棒了。另一方面,在中间代理上,我可以从前端的标头获取此值:
捕获请求标头 X-Unique-ID len 200
现在在这个代理(中间代理)上我有这样的条件:
acl uniq_header_exist hdr_cnt(X-唯一-ID) eq 0
http-request set-header X-Unique-ID %{+X}o\ %ci:%cp_%fi:%fp_%Ts_%rt:%pid 如果 uniq_header_exist
(它完成了这项工作,所以我可以添加 uuid(如果不存在的话) - 很好)并且日志表示如下:
日志格式 %ci:%cp\ [%t]\ %f\ %b/%s\ %Tq/%Tw/%Tc/%Tr/%Tt\ %ST\ %B\ %CC\ %CS\ %tsc\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ {%hrl}\ {%hsl}\ %{+Q}r\ [id=%[capture.req.人类发展报告(2)]]
但我无法有任何可能做这样的事情:
if X-Unique-ID exist then use: …Run Code Online (Sandbox Code Playgroud)