haproxy 记录 req.ssl_sni

haproxy 记录 req.ssl_sni

我正在尝试通过添加 [req.ssl_sni] 来扩展自定义 haproxy 日志格式。在 Ubuntu 上使用的 haproxy 版本是 1.6.3。

前端配置如下:

bind *:443
mode tcp

tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
tcp-request content reject

log-format [...]{%[req.ssl_sni]}

其中[...]表示其他日志选项运行正常。前端以 TCP 模式运行,转发 TLS 会话而不解密它们。

预期的日志输出将类似于{my.server.com}有效 TLS 会话的输出。我看到的日志输出始终是{-}(破折号而不是服务器名称),即使后端服务器成功处理了 TLS 会话也是如此。我必须进行哪些更改才能在日志中看到实际的 SNI 值?

答案1

在接受之前使用捕获为我解决了这个问题。

frontend https-in
  mode tcp
  tcp-request inspect-delay 3s
  tcp-request content capture req.ssl_sni len 10
  log-format "capture0: %[capture.req.hdr(0)]"
  tcp-request content accept if { req_ssl_hello_type 1 }
  use_backend test_0 if req.ssl_sni -m end /test

在这里找到解决方案:https://discourse.haproxy.org/t/log-sni-in-tcp-mode/1534/2

答案2

也许问题出在使用的名称上?我在问题中看到“req.ssl_sni”,在 SNI 示例中看到“req_ssl_sni”。

相关内容