第5章 Red Hat JBoss Web Server の HTTP/2 の有効化
ハイパーテキスト転送プロトコルは、インターネットを介して (サーバーやブラウザーなどの) アプリケーション間でデータを送信する標準的な方法です。
HTTP/2 は、以下のような機能強化を提供し、HTTP/1.1 よりも改良されています。
- ヘッダー圧縮 - 暗黙的な情報を省略して送信されるヘッダーのサイズを縮小します。
- 1 つの接続に対する複数の要求および応答。バイナリーフレーミングを使用して応答メッセージを分割します。これは、テキストのフレーミングとは異なります。
Red Hat JBoss Web Server での HTTP/2 の使用:
-
TLS (
h2) での暗号化された接続は サポートされます。 -
TCP (
h2c) での暗号化されていない接続はサポートされません。
前提条件
- root ユーザーアクセス (Red Hat Enterprise Linux システム)
- Red Hat JBoss Web Server 5.0 以降
以下のオペレーティングシステムネイティブライブラリー (利用可能な場合は
jws-5.5.0-application-server-<platform>-<architecture>.zipによって提供)。RHEL-8 ユーザーが JSSE+OpenSSL または APR を実行する必要がある場合、Tomcat-Native が正常に機能するよう使用する必要があります。Tomcat-Native のファイルはネイティブアーカイブディレクトリーにあります。OpenSSL および APR をインストールするには、以下のコマンドを実行します。
yum install openssl
# yum install openssl
yum install apr
# yum install apr
SSL が有効になっている HTTP/2 プロトコルをサポートするコネクター。JBoss Web Server 5.5 では、HTTP/2 プロトコルがサポートされるコネクターは次のとおりです。
- APR ネイティブコネクター (APR)
- JSSE + OpenSSL (JSSE) のある NIO コネクター
- JSSE + OpenSSL (JSSE) のある NIO2 コネクター
手順
コネクターの HTTP/2 を有効にします。
サーバー設定のコネクター
JWS_HOME/tomcat/conf/server.xmlに、HTTP/2 アップグレードプロトコル (<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />) を追加します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow server.xmlには、HTTP/2 へのアップグレードプロトコルを使用する APR プロトコルのコネクター定義例が含まれています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat JBoss Web Server を root ユーザーとして再起動し、変更した設定を適用します。
systemd (Red Hat Enterprise Linux 7) ユーザーの場合:
systemctl restart jws5-tomcat.service
# systemctl restart jws5-tomcat.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow startup.shを使用して Red Hat JBoss Web Server を実行している Red Hat Enterprise Linux ユーザーの場合:JWS_HOME/sbin/shudown.sh JWS_HOME/sbin/startup.sh
# JWS_HOME/sbin/shudown.sh # JWS_HOME/sbin/startup.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow Windows Server ユーザーの場合:
net restart tomcat9
# net restart tomcat9Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Red Hat Enterprise Linux 6 はサポートされなくなり、その後ドキュメントから削除されました。
次のステップ
Red Hat JBoss Web Server ログを確認して、または curl コマンドを使用して、HTTP/2 が有効になっていることを確認します。
コンソール出力ログ (
JWS_HOME/tomcat/logs/catalina.out) を確認して、コネクターが [h2] へのネゴシエーションをサポートするよう設定されていることを確認してください。cat JWS_HOME/tomcat/logs/catalina.out | grep 'h2' 06-Apr-2018 04:49:26.201 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-apr-8443"] connector has been configured to support negotiation to [h2] via ALPN
$ cat JWS_HOME/tomcat/logs/catalina.out | grep 'h2' 06-Apr-2018 04:49:26.201 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-apr-8443"] connector has been configured to support negotiation to [h2] via ALPNCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、
curl(HTTP2をサポートするcurlのバージョン) を使用して検証します。注記HTTP/2 サポートについて
curlを確認するには、以下を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、HTTP/2 プロトコルが非アクティブである場合:
curl -I http://<JBoss_Web_Server>:8080/
$ curl -I http://<JBoss_Web_Server>:8080/ HTTP/1.1 200 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow ただし、HTTP/2 プロトコルがアクティブである場合、
curlは以下を返します。curl -I https://<JBoss_Web_Server>:8443/
$ curl -I https://<JBoss_Web_Server>:8443/ HTTP/2 200 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、<JBoss_Web_Server> は変更したコネクターの URI (
example.comなど) で、ポート番号は設定によって異なります。
その他のリソース
- HTTP/2 の使用に関する詳細は、Apache Tomcat 9 Configuration Reference: The HTTP Connector - HTTP/2 Support を参照してください。
- HTTP/2 アップグレードプロトコルおよびサポートされる属性の詳細は、 Apache Tomcat 9 Configuration Reference: The HTTP2 Upgrade Protocol を参照してください。
- HTTP/2 向けに提案されるインターネット標準: IETF: RFC 7540 - Hypertext Transfer Protocol Version 2 (HTTP/2)