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 e SSL na mesma porta 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."