SSL Preread#
Позволяет извлекать информацию из сообщения ClientHello без терминации TLS, например имя сервера, запрошенное через SNI, или протоколы, указанные в ALPN.
При сборке из исходного кода модуль не собирается по умолчанию; его необходимо
включить с помощью параметра сборки
Разрешает извлекать информацию из сообщения ClientHello на этапе
предварительного чтения. Максимальная версия протокола SSL, поддерживаемая клиентом. Имя сервера, запрошенное через SNI. Список протоколов, переданный клиентом через ALPN.
Значения разделяются запятыми.‑‑with‑stream_ssl_preread_module
.
В пакетах и образах из
наших репозиториев
модуль включен в сборку.Пример конфигурации#
Выбор апстрима по имени сервера#
map $ssl_preread_server_name $name {
backend.example.com backend;
default backend2;
}
upstream backend {
server 192.168.0.1:12345;
server 192.168.0.2:12345;
}
upstream backend2 {
server 192.168.0.3:12345;
server 192.168.0.4:12345;
}
server {
listen 12346;
proxy_pass $name;
ssl_preread on;
}
Выбор сервера по протоколу#
map $ssl_preread_alpn_protocols $proxy {
~\bh2\b 127.0.0.1:8001;
~\bhttp/1.1\b 127.0.0.1:8002;
~\bxmpp-client\b 127.0.0.1:8003;
}
server {
listen 9000;
proxy_pass $proxy;
ssl_preread on;
}
Выбор сервера по версии протокола SSL#
map $ssl_preread_protocol $upstream {
"" ssh.example.com:22;
"TLSv1.2" new.example.com:443;
default tls.example.com:443;
}
# ssh и https на одном порту
server {
listen 192.168.0.1:443;
proxy_pass $upstream;
ssl_preread on;
}
Директивы#
ssl_preread#
Встроенные переменные#
$ssl_preread_protocol
#$ssl_preread_server_name
#$ssl_preread_alpn_protocols
#