Похоже, что при настройке HAProxy для маршрутизации имени хоста на HTTPS-соединениях крайне важно включить tcp-request inspect-delay
директива, чтобы «дать HAProxy возможность проверить соединение». Есть ли способ настроить NGINX на то же, или мне стоит начать собирать его и переместить весь свой сервер на HAProxy?
(Для справки, этот вопрос исходит из моего предыдущего недоразумения, выраженного Вот)
РЕДАКТИРОВАТЬ
Майкл, в комментариях:
он, кажется, хочет «обнюхать» SNI от попытки рукопожатия клиента без фактического завершения соединения TLS, чтобы принять решение о проксировании соединения нижнего уровня и слепо перенести полезную нагрузку на следующую машину для завершения TLS, потому что для по какой-то причине он не хочет, чтобы сертификаты и ключи TLS на прокси-сервере или прокси вообще выполняли TLS - просто обнюхайте SNI и установите внутреннее TCP-соединение, используя правило, полученное из его содержимого.
Причина в том, что мне нужны сертификаты и ключи в серверных приложениях (некоторые требуют этого по той или иной причине), поэтому я должен предоставить их им. Необходимость их настройки также в прокси-сервере существенно удваивает объем работ по обслуживанию и вероятность ошибки. Если бы я мог обойтись без поддержки доступа к сертификатам для прокси, это упростило бы мою архитектуру и уменьшило бы вероятность ошибок.
В ngx_stream_ssl_preread_module
модуль доступен с Nginx 1.11.5 и, похоже, именно это и делает.
Это позволяет получить доступ к имени сервера SNI, найденному в клиентском ClientHello
сообщение через $ssl_preread_server_name
переменная.
Эта информация может использоваться для маршрутизации TCP («потокового») соединения с серверной частью. В документации к модулю приведен пример того, как это сделать.