Hoy nos complace anunciar la disponibilidad de NGINX Open Source 1.15.2. Una característica clave de esta versión es la nueva variable $ssl_preread_protocol
, que le permite distinguir entre SSL/TLS y otros protocolos al reenviar tráfico utilizando un proxy TCP ( de flujo
). Esto es útil si desea evitar restricciones de firewall al (por ejemplo) ejecutar 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 de NGINX Plus R16 .
$ssl_preread_protocol
Cuando finaliza y descifra el tráfico SSL/TLS, con los módulos http
o stream
, la variable $ ssl_protocol
( http
, stream
) captura la versión de SSL o TLS utilizada por el cliente. Sin embargo, a veces es posible que desees simplemente reenviar el tráfico SSL/TLS sin descifrarlo, utilizando los módulos de flujo
para implementar un proxy TCP básico o un balanceador de carga.
El módulo stream_ssl_preread
inspecciona el mensaje ClientHello
inicial en una conexión SSL o TLS y extrae varios valores que pueden usarse para administrar la conexión. La variable $ssl_preread_protocol
agregada en la versión 1.15.2 captura el último número de versión SSL/TLS del campo client_version
del mensaje ClientHello
. Si la extensión support_versions
está presente en el mensaje ClientHello
, entonces la variable se establece en TLSv1.3
.
Si una conexión no utiliza una versión de SSL o TLS, la variable $ssl_preread_protocol
estará en blanco, lo que indica que la conexión está utilizando un protocolo distinto de SSL/TLS, como SSH.
El siguiente fragmento de configuración utiliza la variable $ssl_preread_protocol
en un bloque de mapa
para establecer la variable $upstream
en el nombre del grupo ascendente apropiado para el protocolo que se utiliza en la conexión. Luego, la directiva proxy_pass
reenvía la solicitud al grupo ascendente seleccionado. Tenga en cuenta que la directiva ssl_preread
on
debe incluirse en el bloque del servidor
para que la variable $ssl_preread_protocol
funcione.
stream { upstream ssh { servidor 192.0.2.1:22; } upstream web { servidor 192.0.2.2:443; } map $ssl_preread_protocol $upstream { default ssh; "TLSv1.2" web; } # SSH y SSL en el mismo puerto server { listen 443; proxy_pass $upstream; ssl_preread on ; } }
Para que la configuración sea efectiva, los clientes deben acceder al servidor SSH en el puerto 443 en lugar del puerto predeterminado 22. Con el cliente SSH integrado en MacOS y Linux, por ejemplo, puede usar el indicador -p
para cambiar el puerto:
$ ssh dirección-ip-del-servidor -ssh -p 443
La última versión de NGINX siempre está disponible en la rama principal de nuestro repositorio oficial .
NGINX Open Source 1.15.2 contiene mejoras adicionales y correcciones de errores. Para obtener una lista completa de las novedades, consulte el registro de cambios de NGINX .
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.