SSL Preread#
Permite extrair informações da mensagem ClientHello sem terminar o TLS, como o nome do servidor solicitado via SNI ou protocolos anunciados em ALPN.
Ao compilar a partir do código fonte,
este módulo não é compilado por padrão;
deve ser habilitado com a
‑‑with‑stream_ssl_preread_module
opção de compilação.
Em pacotes e imagens dos nossos repositórios,
o módulo está incluído na compilação. Habilita a extração de informações da mensagem ClientHello na
fase de preread. Versão mais alta do protocolo SSL suportada pelo cliente. Nome do servidor solicitado via SNI. Lista de protocolos anunciados pelo cliente através do ALPN.
Os valores são separados por vírgula.Exemplo de Configuração#
Selecionando um upstream por nome do 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;
}
Selecionando um 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;
}
Selecionando um servidor por versão do protocolo SSL#
map $ssl_preread_protocol $upstream {
"" ssh.example.com:22;
"TLSv1.2" new.example.com:443;
default tls.example.com:443;
}
# ssh e https na mesma porta
server {
listen 192.168.0.1:443;
proxy_pass $upstream;
ssl_preread on;
}
Diretivas#
ssl_preread#
Variáveis Integradas#
$ssl_preread_protocol
#$ssl_preread_server_name
#$ssl_preread_alpn_protocols
#