Я пытаюсь расширить собственный формат журнала haproxy, добавив [req.ssl_sni]. Используемая версия haproxy - 1.6.3 на Ubuntu.
Интерфейс настроен следующим образом:
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 в журналах?
Использование захвата до принятия решило эту проблему для меня.
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
Может проблема была в используемом названии? Я вижу "req.ssl_sni" в вопросе и "req_ssl_sni" в примерах для SNI.