Назад | Перейти на главную страницу

Может ли NGINX проверять запрос TLS для поиска SNI, как это делает HAProxy (и т. Д.)?

Похоже, что при настройке 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 («потокового») соединения с серверной частью. В документации к модулю приведен пример того, как это сделать.