SSL Preread#
Permite extraer información del mensaje ClientHello sin terminar TLS, como el nombre del servidor solicitado a través de SNI o los protocolos anunciados en ALPN.
Al compilar desde el código fuente,
este módulo no se compila por defecto;
debe habilitarse con la
opción de compilación ‑‑with‑stream_ssl_preread_module
opción de compilación.
En paquetes e imágenes de nuestros repositorios,
el módulo está incluido en la compilación. Permite extraer información del mensaje ClientHello en la
fase preread. Versión más alta del protocolo SSL compatible con el cliente. Nombre del servidor solicitado a través de SNI. Lista de protocolos anunciados por el cliente a través de ALPN.
Los valores están separados por comas.Ejemplo de Configuración#
Seleccionando un upstream por nombre de servidor#
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;
}
Seleccionando un servidor por protocolo#
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;
}
Seleccionando un servidor por versión del protocolo SSL#
map $ssl_preread_protocol $upstream {
"" ssh.example.com:22;
"TLSv1.2" new.example.com:443;
default tls.example.com:443;
}
# ssh y https en el mismo puerto
server {
listen 192.168.0.1:443;
proxy_pass $upstream;
ssl_preread on;
}
Directivas#
ssl_preread#
Variables Integradas#
$ssl_preread_protocol
#$ssl_preread_server_name
#$ssl_preread_alpn_protocols
#