15.9. Undertow における HTTP/2 について
Undertow では、HTTP/2 標準を使用できます。この標準は、ヘッダーの圧縮と多くのストリームの多重化を同じ TCP 接続で行い、待ち時間を削減します。さらに、リクエストの前にサーバーがリソースをクライアントにプッシュできる機能も提供するため、ページのロードがより速くなります。
HTTP/2 は、HTTP/2 標準をサポートするクライアントとブラウザーでのみ機能することに注意してください。
最近のブラウザーのほとんどは、h2 と呼ばれるセキュリティーで保護された TLS 接続経由の HTTP/2 を強制し、h2c と呼ばれるプレーン HTTP 経由の HTTP/2 をサポートしていない可能性があります。HTTPS を使用せず、HTTP アップグレードでプレーン HTTP のみを使用して、h2c で HTTP/2 を使用するように JBoss EAP を設定できます。その場合は、HTTP リスナーで HTTP/2 を有効にするだけです。
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=enable-http2,value=true)
15.9.1. Undertow での HTTP/2 の設定 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、HTTPS リスナーを設定して Undertow で HTTP/2 を有効にする方法について説明します。
前提条件
- 管理 CLI にアクセスできる。
- サーバー設定を変更する権限がある。
手順
HTTPS リスナーで HTTP/2 を有効にします。
---- /subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=enable-http2,value=true) ----変更を適用するには、サーバーをリロードします。
---- reload ----
elytron サブシステムで HTTP/2 を使用するには、Undertow の https-listener にある設定済みの ssl-context が変更可能として設定される必要があります。これには、適切な server-ssl-context の wrap 属性を false に設定します。デフォルトでは wrap 属性は false に設定されます。これは、ALPN に関する ssl-context の変更を行うために Undertow で必要になります。提供された ssl-context が書き込み可能でない場合、ALPN は使用できず、接続は HTTP/1.1 にフォールバックします。
15.9.2. HTTP/2 使用時の ALPN サポート リンクのコピーリンクがクリップボードにコピーされました!
セキュリティーで保護された TLS 接続を介して HTTP/2 を使用する場合は、アプリケーション層プロトコルネゴシエーション (ALPN) TLS プロトコル拡張をサポートする TLS スタックが必要です。このスタックの取得はインストールされた JDK によって異なります。
- Java 9 より、JDK は ALPN をネイティブでサポートするようになりましたが、Java 9 以上を使用する場合でも OpenSSL プロバイダーからの ALPN TLS プロトコル拡張サポートを使用するとパフォーマンスが向上されるはずです。
ALPN TLS プロトコル拡張サポートを取得するために OpenSSL をインストールする手順は JBoss Core Services から OpenSSL をインストールする を参照してください。標準システムの OpenSSL は Red Hat Enterprise Linux 8 でサポートされており、追加の OpenSSL は必要ありません。
OpenSSL がインストールされたら、xref:"configure-jboss-eap-to-use-openssl_configuring-the-web-server-undertow-in-jboss-eap"[OpenSSL を使用するように JBoss EAP を設定する] の指示に従います。
15.9.3. HTTP/2 の使用状況の確認 リンクのコピーリンクがクリップボードにコピーされました!
Undertow が HTTP/2 を使用していることを検証するには、Undertow からのヘッダーを確認する必要があります。https を使用して JBoss EAP インスタンスに移動し (例: https://localhost:8443)、ブラウザーの開発者ツールを使用してヘッダーを確認します。Google Chrome などの一部のブラウザーは、HTTP/2 の使用時には :path、:authority、:method、:scheme などの HTTP/2 擬似ヘッダーを表示します。Firefox や Safari などの他のブラウザーは、ヘッダーの状態またはバージョンを HTTP/2.0 と表示します。