Hoy nos complace anunciar la disponibilidad de NGINX Open Source 1.15.2. Una de las principales novedades de esta versión es la nueva variable $ssl_preread_protocol, que permite distinguir entre SSL/TLS y otros protocolos al reenviar tráfico mediante un proxy TCP (stream). Esto resulta útil si desea evitar las restricciones del cortafuegos ejecutando, por ejemplo, servicios SSL/TLS y SSH en el mismo puerto.
La nueva función también estará disponible para los clientes de NGINX Plus en la próxima versión NGINX Plus R16.
Cuándo y cómo usar $ssl_preread_protocol
Cuando se termina y descifra el tráfico SSL/TLS mediante los módulos http o stream, la variable $ssl_protocol (http, stream) registra la versión de SSL o TLS utilizada por el cliente. Sin embargo, en ocasiones puede que se quiera simplemente reenviar el tráfico SSL/TLS sin descifrarlo, utilizando los módulos stream para implementar un proxy TCP básico o un balanceador de carga.
El módulo stream_ssl_preread inspecciona el mensaje ClientHello inicial de una conexión SSL o TLS y extrae varios valores que pueden utilizarse para gestionar la conexión. La variable $ssl_preread_protocol, añadida en la versión 1.15.2, obtiene el número de la versión más reciente de SSL/TLS del campo client_version del mensaje ClientHello. Si la extensión supported_versions está presente en el mensaje ClientHello, la variable se establece en TLSv1.3.
Si una conexión no utiliza ninguna versión de SSL o TLS, la variable $ssl_preread_protocol estará vacía, lo que indica que la conexión utiliza un protocolo distinto de SSL/TLS, como SSH.
El siguiente fragmento de configuración utiliza la variable $ssl_preread_protocol en un bloque map para asignar a la variable $upstream el nombre del grupo de servidores ascendentes adecuado para el protocolo utilizado en la conexión. A continuación, la directiva proxy_pass reenvía la solicitud al grupo de servidores ascendentes seleccionado. Tenga en cuenta que la directiva ssl_preread on debe incluirse en el bloque server para que funcione la variable $ssl_preread_protocol.
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 la configuración surta efecto, los clientes deben acceder al servidor SSH a través del puerto 443 en lugar del puerto predeterminado 22. Por ejemplo, con el cliente SSH integrado en macOS y Linux, puede utilizar la opción -p para cambiar el puerto:
$ ssh ssh-server-ip-address -p 443Cómo obtener la última versión de NGINX
La última versión de NGINX siempre está disponible en la rama mainline de nuestro repositorio oficial.
Más información
NGINX Open Source 1.15.2 incluye mejoras adicionales y correcciones de errores. Para consultar la lista completa de novedades, consulte el registro de cambios de NGINX.
Sobre el autor

Artículos relacionados del blog
Únete a F5 NGINX en AppWorld 2024
Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.
Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.
Exposición de APIs en Kubernetes
La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».
NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.
Presentamos NGINX Plus R22
NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.
Presentamos NGINX Plus R17
NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.