Aujourd'hui, nous sommes heureux d'annoncer la disponibilité de NGINX Open Source 1.15.2. L'une des fonctionnalités clés de cette version est la nouvelle variable $ssl_preread_protocol
, qui vous permet de faire la distinction entre SSL/TLS et d'autres protocoles lors du transfert de trafic à l'aide d'un proxy TCP ( stream
). Ceci est utile si vous souhaitez éviter les restrictions du pare-feu en (par exemple) exécutant les services SSL/TLS et SSH sur le même port.
La nouvelle fonctionnalité sera également disponible pour les clients NGINX Plus dans la prochaine version NGINX Plus R16 .
$ssl_preread_protocol
Lorsque vous terminez et décryptez le trafic SSL/TLS, avec les modules http
ou stream
, la variable $ ssl_protocol
( http
, stream
) capture la version de SSL ou TLS utilisée par le client. Cependant, vous souhaiterez parfois simplement transférer le trafic SSL/TLS sans le décrypter, en utilisant les modules de flux
pour implémenter un proxy TCP de base ou un équilibreur de charge.
Le module stream_ssl_preread
inspecte le message ClientHello
initial dans une connexion SSL ou TLS et extrait plusieurs valeurs qui peuvent être utilisées pour gérer la connexion. La variable $ssl_preread_protocol
ajoutée dans la version 1.15.2 capture le dernier numéro de version SSL/TLS à partir du champ client_version
du message ClientHello
. Si l'extension taken_versions
est présente dans le message ClientHello
, la variable est définie sur TLSv1.3
.
Si une connexion n'utilise pas une version de SSL ou TLS, la variable $ssl_preread_protocol
sera vide, indiquant que la connexion utilise un protocole autre que SSL/TLS, tel que SSH.
L'extrait de configuration suivant utilise la variable $ssl_preread_protocol
dans un bloc de mappage
pour définir la variable $upstream
sur le nom du groupe en amont approprié au protocole utilisé sur la connexion. La directive proxy_pass
transmet ensuite la demande au groupe en amont sélectionné. Notez que la directive ssl_preread
on
doit être incluse dans le bloc serveur
pour que la variable $ssl_preread_protocol
fonctionne.
flux { ssh en amont { serveur 192.0.2.1:22; } web en amont { serveur 192.0.2.2:443; } carte $ssl_preread_protocol $upstream { ssh par défaut; "TLSv1.2" web; } # SSH et SSL sur le même port serveur { écoute 443; proxy_pass $upstream; ssl_preread on ; } }
Pour que la configuration soit efficace, les clients doivent accéder au serveur SSH sur le port 443 au lieu du port par défaut 22. Avec le client SSH intégré sur MacOS et Linux, par exemple, vous pouvez utiliser l’indicateur -p
pour modifier le port :
$ ssh adresse-ip-du-serveur -ssh -p 443
La dernière version de NGINX est toujours disponible dans la branche principale de notre référentiel officiel .
NGINX Open Source 1.15.2 contient des améliorations supplémentaires et des corrections de bogues. Pour une liste complète des nouveautés, consultez le journal des modifications de NGINX .
« Cet article de blog peut faire référence à des produits qui ne sont plus disponibles et/ou qui ne sont plus pris en charge. Pour obtenir les informations les plus récentes sur les produits et solutions F5 NGINX disponibles, explorez notre famille de produits NGINX . NGINX fait désormais partie de F5. Tous les liens NGINX.com précédents redirigeront vers un contenu NGINX similaire sur F5.com."