Hoje temos o prazer de anunciar a disponibilidade do NGINX Open Source 1.15.2. Um recurso importante nesta versão é a nova variável $ssl_preread_protocol
, que permite distinguir entre SSL/TLS e outros protocolos ao encaminhar tráfego usando um proxy TCP ( stream
). Isso é útil se você quiser evitar restrições de firewall (por exemplo) executando serviços SSL/TLS e SSH na mesma porta.
O novo recurso também estará disponível para clientes do NGINX Plus na próxima versão do NGINX Plus R16 .
$ssl_preread_protocol
Quando você encerra e descriptografa o tráfego SSL/TLS, com os módulos http
ou stream
, a variável $ ssl_protocol
( http
, stream
) captura a versão do SSL ou TLS usada pelo cliente. No entanto, às vezes você pode querer simplesmente encaminhar o tráfego SSL/TLS sem descriptografá-lo, usando os módulos de fluxo
para implementar um proxy TCP básico ou balanceador de carga.
O módulo stream_ssl_preread
inspeciona a mensagem ClientHello
inicial em uma conexão SSL ou TLS e extrai vários valores que podem ser usados para gerenciar a conexão. A variável $ssl_preread_protocol
adicionada na versão 1.15.2 captura o número da versão mais recente do SSL/TLS do campo client_version
da mensagem ClientHello
. Se a extensão supported_versions
estiver presente na mensagem ClientHello
, a variável será definida como TLSv1.3
.
Se uma conexão não usar uma versão de SSL ou TLS, a variável $ssl_preread_protocol
ficará em branco, indicando que a conexão está usando um protocolo diferente de SSL/TLS, como SSH.
O snippet de configuração a seguir usa a variável $ssl_preread_protocol
em um bloco de mapa
para definir a variável $upstream
como o nome do grupo upstream apropriado para o protocolo que está sendo usado na conexão. A diretiva proxy_pass
então encaminha a solicitação para o grupo upstream selecionado. Observe que a diretiva ssl_preread
on
deve ser incluída no bloco server
para que a variável $ssl_preread_protocol
funcione.
stream { upstream ssh {
server 192.0.2.1:22;
}
upstream web {
server 192.0.2.2:443;
}
map $ssl_preread_protocol $upstream {
default ssh;
"TLSv1.2" web;
}
# SSH and SSL on the same port
server {
listen 443;
proxy_pass $upstream;
ssl_preread on;
}
}
Para que a configuração seja efetiva, os clientes precisam acessar o servidor SSH na porta 443 em vez da porta padrão 22. Com o cliente SSH integrado no MacOS e Linux, por exemplo, você pode usar o sinalizador -p
para alterar a porta:
$ ssh ssh-server-ip-address -p 443
A versão mais recente do NGINX está sempre disponível na ramificação principal do nosso repositório oficial .
O NGINX Open Source 1.15.2 contém melhorias adicionais e correções de bugs. Para uma lista completa das novidades, consulte o log de alterações do NGINX .
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."