すべてのプロダクト
Search
ドキュメントセンター

Global Accelerator:GA インスタンスの HTTP/2 を構成する

最終更新日:Mar 13, 2025

Global Accelerator (GA) インスタンスで構成されている HTTPS サービスのパフォーマンスを向上させるために HTTP/2 を使用する場合、GA インスタンスの HTTP/2 を構成できます。 HTTP/2 を有効にすると、HTTPS サービスは HTTP/2 の利点を利用して、サービスのパフォーマンスを大幅に向上させ、ネットワーク遅延とオーバーヘッドを削減し、アクセスエクスペリエンスを向上させることができます。

HTTP/2 とは

HTTP/2 は HTTP/2.0 とも呼ばれます。 HTTP/1.1 と比較して、HTTP/2 は多重化、ヘッダー圧縮、リクエストの優先順位付け、およびサーバープッシュをサポートしています。 これらの機能は、HTTP/1.1 の特定の問題を解決します。 HTTP/2 はパフォーマンスの向上を実現し、HTTP/1.1 セマンティクスと互換性があります。 HTTP/2 は、Google Chrome、Microsoft Edge、Safari、Mozilla Firefox などの主要なブラウザでサポートされています。

HTTP/2 の利点:

  • バイナリエンコーディング: 改行区切りのプレーンテキスト HTTP/1.x プロトコルとは異なり、すべての HTTP/2 通信はより小さなメッセージとフレームに分割され、それぞれがバイナリ形式でエンコードされます。 バイナリエンコーディングメカニズムにより、HTTP/2 はより拡張性が高くなります。 たとえば、フレームはデータと命令を送信するために導入されています。

  • 多重化: ブラウザは同じドメイン名へのリクエスト数を制限しているため、HTTP/1.x では、パフォーマンスを向上させるためにスプライトと複数のドメイン名が必要です。 クライアントがページ上の多数のリソースをリクエストすると、head-of-line ブロッキング (HOL ブロッキング) が発生する可能性があります。 リクエスト数が上限に達すると、接続ごとに一度に 1 つの リクエストしか配信できないため、リクエストはキューで待機する必要があります。 HTTP/2 は新しいフレーミングレイヤーであり、双方向ストリーム (リクエストとレスポンス) を同じ TCP 接続を介して送信できます。 各ストリームには一意の識別子とヘッダーがあり、ストリームはクライアントとサーバー間でカプセル化されます。 このメカニズムにより、HOL ブロッキングが解消され、伝送パフォーマンスが向上します。

  • ヘッダー圧縮: 各 HTTP メッセージには、転送されたリソースとプロパティを記述する多数のヘッダーが含まれています。 オーバーヘッドを削減するために、HTTP/2 は HPACK 圧縮を使用します。 HTTP/2 では、クライアントとサーバーの両方で、インデックス付きのヘッダーフィールドリストを維持および更新する必要があります。 このリストは、インデックス値を転送することにより、以前に送信された値をエンコードするためのリファレンスとして使用されます。 これにより、データ伝送効率とパフォーマンスが向上します。

HTTP/2 接続ネゴシエーション

HTTPS 接続のネゴシエーションプロセス中に、アプリケーションデータを送信する前に、クライアントとサーバー間で TLS 接続を確立する必要があります。 HTTP/2 は、Application-Layer Protocol Negotiation (ALPN) メカニズムを使用して、クライアントとサーバーが使用するプロトコルバージョンをネゴシエーションできるようにします。

Global Accelerator インスタンスの HTTP/2 を有効にすると、Global Accelerator インスタンスは、クライアントから送信された ClientHello メッセージの ALPN フィールドのプロトコルバージョンとして h2 を指定します。 さらに、GA インスタンスは、サーバーから返された ServerHello メッセージの ALPN フィールドのプロトコルバージョンを無視し、HTTP/2 を強制的に使用してバックエンドサービスに接続します。

次のシナリオは例です。 米国 (シリコンバレー) リージョンに本社を置く企業は、仮想プライベートクラウド (VPC) 内の Elastic Compute Service (ECS) インスタンスに HTTPS Web サイトをデプロイします。 アプリケーションのほとんどのユーザーは、中国 (香港) リージョンからアプリケーションにアクセスします。 企業は、不安定なクロスボーダーネットワークが原因で発生する可能性のあるネットワーク遅延、ネットワークジッター、パケット損失などのネットワーク問題に対処するために Global Accelerator インスタンスを購入しました。

Web サイトのパフォーマンスをさらに向上させ、Web サイトへのアクセスを最適化するために、企業は GA インスタンスの HTTP/2 リスナーを構成することにしました。

Global Accelerator インスタンスのバックエンドサービスが HTTPS を使用している場合、HTTP/1.1 を使用してバックエンドサービスに接続します。 この場合、企業は Global Accelerator インスタンスの構成を変更して、HTTP/2 を使用してバックエンドサービスに接続する必要があります。 これにより、企業はパフォーマンス最適化における HTTP/2 の利点を利用できます。

制限

GA インスタンスの HTTP/2 を構成する場合、次の制限が適用されます。

  • デフォルトでは、[プロトコルバージョン] 選択機能は無効になっています。 この機能を使用するには、アカウントマネージャーにお問い合わせください。

  • WebSocket プロトコルはサポートされていません。

  • HTTP/2 プロトコルのサーバープッシュ機能はサポートされていません。

  • HTTP/2 に基づく gRPC リクエストは高速化できません。

前提条件

  • サーバー証明書は、SSL Certificates Service コンソールで購入またはアップロードされます。 詳細については、「公式証明書を購入する」および「SSL 証明書をアップロードして共有する」をご参照ください。

  • 証明書はバックエンドサーバーにアップロードされます。 詳細については、「クラウドアシスタントを使用して ECS インスタンスにファイルをアップロードする」をご参照ください。

  • ポート 443 を使用する HTTPS サービスがデプロイされ、HTTP/2 が有効になっています。

    バックエンドサーバーが属するセキュリティグループで TCP ポート 443 へのアクセスが許可されていることを確認してください。 詳細については、「セキュリティグループルールを追加する」をご参照ください。

    ECS インスタンスでポート 443 を使用する HTTPS NGINX サービスをデプロイし、HTTP/2 を有効にするためのサンプルコード:

    1. 次のコマンドを実行して NGINX をインストールし、テストアプリケーションをデプロイします。

      yum install -y nginx
      cd /usr/share/nginx/html/
      echo "Hello World !  This is ECS." > index.html
    2. 次のコマンドを実行して、証明書と秘密鍵を格納するためのディレクトリを作成します。

      mkdir -p /etc/pki/nginx/private/
    3. 次のコマンドを実行して、nginx.conf という名前の NGINX 構成ファイルを開きます。 プロトコル設定を変更します。 次に、変更を保存して終了します。

      vim /etc/nginx/nginx.conf

      構成の詳細:

      # 構成の詳細については、以下を参照してください。
      #   * 公式英語ドキュメント: http://nginx.org/en/docs/
      #   * 公式ロシア語ドキュメント: http://nginx.org/ru/docs/
      
      user nginx;
      worker_processes auto;
      error_log /var/log/nginx/error.log;
      pid /run/nginx.pid;
      
      
      events {
          worker_connections 1024;
      }
      
      http {
          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for" "$server_protocol"';
          access_log  /var/log/nginx/access.log  main;
          sendfile            on;
          tcp_nopush          on;
          tcp_nodelay         on;
          keepalive_timeout   65;
          types_hash_max_size 4096;
      
          include             /etc/nginx/mime.types;
          default_type        application/octet-stream;
          server {
              # HTTP/2 を有効にします。
              listen       443 ssl http2;
              listen       [::]:443 ssl http2;
              server_name  _;
              root         /usr/share/nginx/html;
      
              # 証明書ファイルのパスを指定します。
              ssl_certificate "/etc/pki/nginx/<cert-file-name>.pem";
              # 秘密鍵のパスを指定します。
              ssl_certificate_key "/etc/pki/nginx/private/<cert-file-name>.key";
              ssl_session_cache shared:SSL:1m;
              ssl_session_timeout  10m;
              ssl_ciphers PROFILE=SYSTEM;
              ssl_prefer_server_ciphers on;
      
      
              error_page 404 /404.html;
                  location = /40x.html {
              }
      
              error_page 500 502 503 504 /50x.html;
                  location = /50x.html {
              }
          }
      
      }
    4. 次のコマンドを実行して、NGINX サービスを再起動します。

      systemctl restart nginx.service
  • Global Accelerator インスタンスが作成されます。NGINX サービスがデプロイされている ECS インスタンスは、GA インスタンスのエンドポイントとして指定されます。バックエンドサービスのプロトコルは HTTPS に設定されます。詳細については、「標準 GA インスタンスを作成および管理する」をご参照ください。

  • 証明書に関連付けられているドメイン名は、Global Accelerator によって割り当てられた CNAME ドメイン名にマッピングされます。詳細については、「ドメイン名の CNAME レコードを追加する」をご参照ください。

HTTP/2 を構成する

このセクションでは、主要なパラメーターについてのみ説明します。その他のエンドポイントグループパラメーターの詳細については、「インテリジェントルーティングリスナーのエンドポイントグループを作成および管理する」をご参照ください。

  1. GA コンソール にログオンします。

  2. インスタンス ページで、管理する GA インスタンスを見つけ、操作 列の リスナーの設定 をクリックします。

  3. リスナー タブで、管理するリスナーを見つけ、操作 列の エンドポイントグループの編集 をクリックします。

  4. リスナーとプロトコルの設定 ステップで、[次へ] をクリックします。

  5. エンドポイントグループの設定 ステップで、[プロトコルバージョン]HTTP/2 を選択し、[次へ] をクリックします。

    选择HTTP2.png

  6. 設定の確認 ステップで、構成を確認し、送信 をクリックします。

検証

エンドポイントグループ構成でプロトコルバージョンを HTTP/2 に設定する前後で、次の手順を実行して HTTP/2 が有効になっているかどうかを確認できます。

  1. 中国 (香港) リージョンのクライアントでブラウザを開き、https://<高速化ドメイン名> と入力します。次に、Enter キーを押して、バックエンドサービスにアクセスできるかどうかを確認します。

  2. 米国 (シリコンバレー) リージョンのバックエンドサーバーにログオンします。 CLI を開き、次のコマンドを実行して、最新の訪問レコードを表示します。

    レコードの詳細で、バックエンドサーバーにリクエストを送信するために使用されたプロトコルバージョンを確認できます。

    tail -n 1 /var/log/nginx/access.log

    次の図は、プロトコルバージョンを HTTP/2 に設定する前に返されたレコードを示しています。默认HTTP1.1回源.png次の図は、プロトコルバージョンを HTTP/2 に設定した後に返されたレコードを示しています。

    HTTP2回源.png

参照資料

チュートリアル

API リファレンス

  • CreateEndpointGroup: エンドポイントグループを作成します。EndpointProtocolVersion を使用して、バックエンド サービスへの接続に使用する HTTP バージョンを指定できます。

  • UpdateEndpointGroup: エンドポイントグループを変更します。EndpointProtocolVersion を使用して、バックエンド サービスへの接続に使用する HTTP バージョンを指定できます。

  • DeleteEndpointGroup: エンドポイントグループを削除します。