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

Global Accelerator:バックエンド接続の HTTP/2

最終更新日:Jun 22, 2026

HTTPS サービスに Global Accelerator (GA) を使用している場合、バックエンドサービスへの接続に HTTP/2 を有効にできます。これにより、HTTP/2 の機能を利用してパフォーマンスを向上させ、レイテンシーを短縮し、ネットワークオーバーヘッドを削減できます。

HTTP/2 とは

HTTP/2 (HTTP 2.0 とも呼ばれる) は、HTTP/1.1 をベースに、多重化、ヘッダー圧縮、リクエストの優先順位付け、サーバープッシュなどの新機能を備えています。これらの機能は、HTTP/1.1 の長年の問題を解決し、そのセマンティクスとの互換性を維持しながらリクエストのパフォーマンスを最適化します。Chrome、Edge、Safari、Firefox などの最新のブラウザーはすべて HTTP/2 をサポートしています。

HTTP/2 の利点:

  • バイナリプロトコル:テキストベースで解析する HTTP/1.x とは異なり、HTTP/2 は送信されるすべての情報を、バイナリエンコードされたより小さなメッセージとフレームに分割します。バイナリ形式は、フレームがデータと命令を伝達できるようにするなど、より高い拡張性を提供します。

  • 多重化:HTTP/1.x では、ブラウザーが単一ドメインへの同時リクエスト数を制限するため、パフォーマンスの最適化には画像スプライトや複数ドメインの使用などの手法がしばしば用いられました。ページが多くのリソースを必要とする場合、head-of-line ブロッキングにより、新しいリクエストは他のリクエストが完了するのを待つ必要がありました。HTTP/2 では、バイナリフレーミング層により、複数のリクエストとレスポンスを共有 TCP 接続を介して同時に送信できます。これらは、ストリーム識別子とヘッダーを使用してもう一方の端で再構成されます。この技術は、従来の HTTP バージョンの head-of-line ブロッキング問題を回避し、伝送パフォーマンスを大幅に向上させます。

  • ヘッダー圧縮:HTTP リクエストヘッダーには、各リクエストで繰り返し送信される大量の情報が含まれています。HTTP/2 は圧縮に HPACK 形式を使用します。クライアントとサーバーの両方がヘッダーフィールドのキャッシュテーブルを維持し、既知のヘッダーのインデックスのみが送信されるため、効率と速度が向上します。

HTTP/2 ネゴシエーション

HTTPS 接続では、クライアントとサーバーはアプリケーションデータを送信する前に Transport Layer Security (TLS) 接続を確立する必要があります。HTTP/2 をサポートするために、ハンドシェイクではアプリケーション層プロトコルネゴシエーション (ALPN) を使用して、使用するプロトコルバージョンを決定します。

Global Accelerator で HTTP/2 を有効にすると、Global Accelerator は TLS ハンドシェイク中に ClientHello メッセージの ALPN フィールドに h2 を指定します。Global Accelerator はその後、ServerHello メッセージでサーバーから返されたプロトコルバージョンを無視し、バックエンドサービスへの HTTP/2 接続を強制します。

ユースケース

このトピックでは、次のシナリオを使用します。ある企業は米国 (シリコンバレー) に本社を置き、Alibaba Cloud Elastic Compute Service (ECS) インスタンスで HTTPS ウェブサイトをホストしています。クライアントのほとんどは中国 (香港) にいます。この企業は、不安定なクロスボーダーのパブリックネットワークによって引き起こされるレイテンシー、ジッター、パケットロスなどのネットワーク問題を軽減するために Global Accelerator を使用しています。

ウェブサイトのパフォーマンスとユーザーエクスペリエンスをさらに向上させるために、この企業は HTTP/2 プロトコルを採用する予定です。

デフォルトでは、Global Accelerator がバックエンドサービスプロトコルとして HTTPS に設定されている場合、HTTP/1.1 を使用してバックエンドサービスに接続します。プロトコルのパフォーマンス向上を最大限に活用するために、この企業は Global Accelerator インスタンスの設定を変更して、バックエンド接続に HTTP/2 を指定する必要があります。

image

制限事項

Global Accelerator が HTTP/2 を使用してバックエンドサービスに接続するように設定する場合、次の制限事項が適用されます。

  • お使いの Global Accelerator インスタンスで[プロトコルバージョン] オプションが利用できない場合、そのインスタンスではこの機能がサポートされていない可能性があります。有効にするには、アカウントマネージャーに連絡してインスタンスのアップグレードを依頼してください。

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

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

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

前提条件

  • 証明書管理サービスコンソールでサーバー証明書が購入またはアップロードされていること。詳細については、「公式証明書の購入」および「SSL 証明書のアップロード、同期、共有」をご参照ください。

  • 証明書ファイルがバックエンドサーバーにアップロードされていること。詳細については、「Cloud Assistant を使用した ECS インスタンスへのファイルのアップロード」をご参照ください。

  • バックエンドサーバーのポート 443 に HTTPS サービスがデプロイされており、HTTP/2 プロトコルバージョンが有効になっていること。

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

    例:Alibaba Cloud ECS インスタンスの Nginx でポート 443 の HTTPS サービスを設定し、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 設定ファイル nginx.conf を編集し、プロトコルバージョンの設定を変更してから、保存して終了します。

      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 インスタンスが作成され、バックエンドサーバーがエンドポイントとして追加され、バックエンドサービスプロトコルが HTTPS に設定されていること。詳細については、「標準 Global Accelerator インスタンスの作成と管理」をご参照ください。

  • ドメインが、Global Accelerator インスタンスによって割り当てられた CNAME アドレスにマッピングされていること。詳細については、「CNAME レコードの追加」をご参照ください。

バックエンド接続のための HTTP/2 の設定

このセクションでは、このシナリオに関連する主要な設定項目のみを説明します。エンドポイントグループの設定の詳細については、「インテリジェントルーティングリスナーのエンドポイントグループの追加と管理」をご参照ください。

  1. Global Acceleratorコンソールにログインします。
  2. インスタンスページで対象の GA インスタンスを見つけ、操作 列の リスナーの設定 をクリックします。

  3. リスナー タブで、目的のリスナーを見つけ、操作 列の ノードグループの編集 をクリックします。

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

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

    [バックエンドサービスプロトコル][HTTPS] に、[プロトコルバージョン][HTTP/2] に設定します。

  6. 設定監査 ステップで、設定を確認し、送信する をクリックします。

結果の検証

HTTP/2 が有効になっていることを確認するには、プロトコルバージョンを変更する前と後に次の手順を実行します。

  1. 中国 (香港) リージョンのクライアントからブラウザーを開き、https://<アクセラレーション対象ドメイン名> と入力します。バックエンドサービスに正常にアクセスできるはずです。

  2. 米国 (シリコンバレー) リージョンのバックエンドサーバーで、コマンドラインウィンドウを開き、次のコマンドを実行して最新のアクセスレコードを表示します。

    アクセスレコードには、リクエストをバックエンドサーバーに転送するために使用されたプロトコルバージョンが表示されます。

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

    プロトコルバージョンを設定する前は、アクセスログはオリジンリクエストが HTTP/1.1 プロトコルを使用していることを示しています。

    [root@iZxxx ~]# tail -n 1 /var/log/nginx/access.log
    172.20.xxx - - [30/Jul/2024:14:40:40 +0800] "GET / HTTP/1.1" 200 27 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0 Safari/537.36 Edg/126.0.0.0" "47.76.xxx"

    プロトコルバージョンを HTTP/2 に設定すると、アクセスログはオリジンリクエストが HTTP/2.0 を使用していることを示しています。

    [root@iZrj95wxxx xxx  ~]# tail -n 1 /var/log/nginx/access.log
    172.20.xxx.xxx - - [30/Jul/2024:14:42:55 +0800] "GET / HTTP/2.0" 200 27 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0 Safari/537.36 Edg/126.0.0" "47.76.xxx.xxx"

関連ドキュメント

チュートリアル

関連 API

  • CreateEndpointGroup:エンドポイントグループを作成します。EndpointProtocolVersion パラメーターを使用して、バックエンドサービスに接続するためのプロトコルバージョンを指定します。

  • UpdateEndpointGroup:エンドポイントグループのビジネス設定を変更します。EndpointProtocolVersion パラメーターを使用して、バックエンドサービスに接続するためのプロトコルバージョンを指定します。

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