SSL Preread#
Позволяет извлекать информацию из сообщения
ClientHello
без терминации TLS,
например имя сервера, запрошенное через
SNI,
или протоколы, указанные в
ALPN. Разрешает извлекать информацию из сообщения ClientHello на этапе
предварительного чтения. Максимальная версия протокола SSL, поддерживаемая клиентом. Имя сервера, запрошенное через SNI. Список протоколов, переданный клиентом через ALPN.
Значения разделяются запятыми.Пример конфигурации#
Выбор апстрима по имени сервера#
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#