HTTP/2 が Azure App Service でサポートされます

2 minute read

この記事は 旧 Japan Azure PaaS Support Blog からのコピーとなります。
記載されている内容は 2018 年 4 月 17 日 時点のものとなり、現時点におきましては変更されている可能性がありますので、ご注意下さい。

このポストは、2018 年 4 月 13 日に投稿された Announcing HTTP/2 support in Azure App Service の翻訳です。

Azure App Service チームは、App ServiceでホストされているすべてのアプリケーションのHTTP/2 プロトコルのサポートのグローバル展開を発表します。 HTTP/2 は 最も多かったカスタマー リクエスト であり、私たちはサポートを提供することに興奮しています!

HTTP/2とは何ですか?

HTTP/2は、TCP の接続で HTTP セマンティクス フローを再検討したものであり、現在 Windows 10 と Windows Server 2016 でサポートされています。HTTP/2 は、20年近く使用された HTTP / 1.1 のメジャーアップグレードであり、 Webサーバ上の待ち時間と接続負荷を軽減します。

HTTP/1.1 の主な利点は、並行して複数の要求を連続して処理するために、複数の接続を使用することでした。 HTTP/2 では、永続的な一つの接続を使用して複数の要求を同時に処理できます。 このプロセスでは、HTTP/2 には、ネットワーク上の HTTP の効率を向上させるいくつかの追加機能が導入されています。

複数のリクエストに対する 1 つの接続

すべての TCP 接続は、セットアップのために往復が必要です。暗号化を使用している場合、TLS ハンドシェイクにはさらに 1〜2 回の往復が必要です。これは、最初の応答の最初のバイトが送信される前に全ての接続で発生します。新しい接続を設定する代わりに既存の接続を再利用することによって、このオーバーヘッドを多くの要求で共有することができます。 HTTP/2 は、新しい接続が確立されている間の待機する、もしくは既存の接続がアイドル状態になるまで待機する必要性を大幅に減らします。単一の接続が多数の要求の間で多重化されているため、他の要求が完了するのを待つことなく、要求をすぐに送信できます。

HPACK によるヘッダー圧縮

HTTP は、何年もの間データの圧縮をサポートしています。ただし、ヘッダは圧縮されていないテキストとして送信され、要求間には多くの冗長性があります。(最も長いヘッダーの多くは、リクエストごとに同じ値で送信されます)HTTP/2 では、HTTP ヘッダーの圧縮方式であるHPACKが導入され、要求間の冗長性が低減されています。

要求がより小さくなるので、圧縮は多重化にも役立ちます。これにより、TCPフロー制御ウィンドウは小さい一方、クライアントは接続上の最初のパケットで多くの要求を行うことができます。

HTTP / 1.xとの主な違いは何ですか?

  • HTTP/2はバイナリです
  • 順序付けされ、ブロックされるのではなく、完全に多重化されています
  • 1つの接続で並列性を実現することができます
  • 1つの TCP/IP 接続を保持しています
  • ヘッダー圧縮を使用してオーバーヘッドを削減します

App Service ユーザはどのようなアクションを取る必要がありますか?

Azure Portal の機能を使用できるようにする UI がすぐに提供される予定ですが、今のところは単純な設定変更を行う必要があります! HTTP/2 は、すべての顧客に対して既定で無効になっていますが、サイトにオプトインして HTTP/2 を適用する場合は、次の手順を実行します。

次のいずれかの手順を使用して Azure リソースエクスプローラー を参照します。( https://resources.azure.com/ )

Azure Portal で、App Service のメニューで「リソースエクスプローラー」を選択します。

次に、[移動]を選択します。

または、リソースエクスプローラー( https://resources.azure.com/ )に直接アクセスしてください。

Azure Portal から利用する利点は、ブラウザがリクエストされたアプリの設定に自動的に移動することです。

リソースエクスプローラー に直接アクセスする場合は、次のパスを使用してツリー階層をサイトにドリル ダウンします。

サブスクリプション > リソースグループ > サイト名 > プロバイダー > Microsoft.Web > サイト > サイト名 > config > web

ページの一番上が、 "read/write" モードになっていることを確認してください:

編集を選択してください:

HTTP/2のパラメータを検索してください:

'false'の代わりに ' true 'と入力します。

上部にある「PUT」を選択します。

設定完了です!

  • Appサービス環境とAzure National Clouds での HTTP/2 のサポートはすぐに開始されます。

HTTP / 2ブラウザのサポートにはSSLが必要

最新のブラウザでは、SSL  経由の HTTP/2 プロトコルのみをサポートしており、非 SSL トラフィックは引き続き HTTP/1.1 を使用しています。 App Serviceを使用すると、SSL を使用して簡単に稼動させることができます。 アプリに新しいSSL証明書を設定する方法 、または 既存のSSL証明書をアプリにバインドする方法 を確認してください。 Appサービスは、* .azurewebsites.net ドメインにバインドされた共通のワイルドカードSSL証明書を使用して、すべてのアプリに対してデフォルトのSSL機能を提供しています。どんなアプローチの場合も、最新のブラウザで HTTP/2 のメリットを享受するためには、アプリをSSL上で実行する必要があります。

問題が発生したらどうなりますか?

HTTP / 2の更新に起因すると思われる問題が見つかった場合は、次の方法で警告できます。