本日、NGINX Open Source 1.15.2 が利用可能になったことをお知らせいたします。 このリリースの重要な機能の 1 つは、新しい$ssl_preread_protocol
変数です。これにより、TCP (ストリーム
) プロキシを使用してトラフィックを転送するときに、SSL/TLS と他のプロトコルを区別できるようになります。 これは、たとえば SSL/TLS と SSH サービスを同じポートで実行してファイアウォールの制限を回避する場合に便利です。
この新機能は、 NGINX Plus R16 の今後のリリースで NGINX Plus のお客様にもご利用いただけるようになります。
$ssl_preread_protocol を
いつ、どのように使用するかhttp
またはstream
モジュールのいずれかを使用して SSL/TLS トラフィックを終了して復号化すると、$ ssl_protocol
( http
、 stream
) 変数はクライアントが使用する SSL または TLS のバージョンを取得します。 ただし、ストリーム
モジュールを使用して基本的な TCP プロキシまたはロード バランサーを実装し、SSL/TLS トラフィックを復号化せずに転送したい場合もあります。
stream_ssl_preread
モジュールは、SSL または TLS 接続の最初のClientHello
メッセージを検査し、接続の管理に使用できるいくつかの値を抽出します。 リリース 1.15.2 で追加された$ssl_preread_protocol
変数は、 ClientHello
メッセージのclient_version
フィールドから最新の SSL/TLS バージョン番号を取得します。 ClientHello
メッセージにsupported_versions
拡張が存在する場合、変数はTLSv1.3
に設定されます。
接続で SSL または TLS のバージョンが使用されない場合、 $ssl_preread_protocol
変数は空白になり、接続で SSH などの SSL/TLS 以外のプロトコルが使用されていることを示します。
次の構成スニペットでは、マップ
ブロック内の$ssl_preread_protocol
変数を使用して、 $upstream
変数を、接続で使用されているプロトコルに適したアップストリーム グループの名前に設定します。 次に、 proxy_pass
ディレクティブは、選択されたアップストリーム グループにリクエストを転送します。 $ssl_preread_protocol
変数が機能するには、 ssl_preread
on
ディレクティブをサーバー
ブロックに含める必要があることに注意してください。
stream { アップストリーム ssh { server 192.0.2.1:22; } アップストリーム web { server 192.0.2.2:443; } map $ssl_preread_protocol $upstream { default ssh; "TLSv1.2" web; } # 同じポートで SSH と SSL を使用する server { listen 443; proxy_pass $upstream; ssl_preread on ; } }
設定を有効にするには、クライアントはデフォルトのポート 22 ではなくポート 443 で SSH サーバーにアクセスする必要があります。 たとえば、MacOS および Linux の組み込み SSH クライアントでは、 -p
フラグを使用してポートを変更できます。
$ ssh sshサーバのIPアドレス-p 443
NGINX の最新バージョンは、公式リポジトリのメインライン ブランチで常に利用できます。
NGINX Open Source 1.15.2 には、追加の機能強化とバグ修正が含まれています。 新機能の完全なリストについては、 NGINX の変更ログを参照してください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"