Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

HTTP/2 to Origin

最終更新 Markdown で表示Agent セットアップ

プロトコルは、デバイス間でデータをやり取りするための規則です。アプリケーションがネットワークサービスにアクセスする、人とコンピューターのやり取りの層で特に重要なプロトコルの 1 つが HTTP(Hypertext Transfer Protocol)です。

HTTP は広く使われているプロトコルで、複数のバージョンがあります。新しいバージョンほど、古いバージョンよりパフォーマンスが向上する機能が加わります。現在のインターネットでは HTTP/1.1 と HTTP/2 が広く使われています。HTTP/1.1 は 10 年以上使われてきましたが、2015 年に IETF(Internet Engineering Task Force)が HTTP/2 を導入し、ページ読み込み時間を短縮する機能をいくつか追加しました。HTTP/1.1 と HTTP/2 の違いの詳細は HTTP/2 versus HTTP/1.1 を参照してください。

提供状況

Free Pro Business Enterprise
提供状況 あり あり あり あり

HTTP/2 to Origin を無効にする

Cloudflare では、オリジンへの HTTP/2 接続はデフォルトで有効です。

HTTP/2 to Origin を無効にする手順は次のとおりです。

  1. Cloudflare ダッシュボードで Speed > Settings ページを開きます。

    Settings を開く ↗
  2. Protocol Optimization タブを開き、HTTP/2 to Origin のトグルを Off にします。

コネクション多重化

Cloudflare は、グローバルなエッジネットワークからオリジンサーバーへの HTTP/2 多重化に対応しています。受信リクエストごとに新しい TCP 接続を開くのではなく、複数の HTTP/2 ストリームが 1 本の長寿命 TCP 接続を共有します。接続の確立と切断のコストが大幅に減り、Cloudflare とオリジン間の効率とパフォーマンスが向上します。

多数のリクエストを少ない TCP 接続にまとめることで、オリジンが維持する必要があるアクティブ接続数が減ります。接続オーバーヘッドやリソース上限に敏感なバックエンドでは特に有効です。

仕組み

新しいリクエストが届くと、Cloudflare はオリジンへの既存の HTTP/2 接続の再利用を試みます。

  • 接続が同時ストリーム上限に達していなければ、同じ接続上でリクエストを多重化します。
  • ストリーム上限に達している場合は、必要に応じて新しい TCP 接続を開きます。

接続は、アイドルになるか同時実行上限に達するまで維持され、再利用されます。

接続のライフサイクル

  • 接続の再利用: Cloudflare はオリジンへの永続的な(keep-alive)TCP 接続を維持します。HTTP/2 のストリーム上限に達するか、接続がアイドルになるまで再利用が続きます。

  • アイドルタイムアウト(900 秒): アクティブなストリームがない状態が 900 秒続くと、Cloudflare はその接続を閉じます。閉じた接続を再利用しようとすると、520 エラーになることがあります。

  • Keep-alive: Cloudflare は、応答しないオリジンを検出するために、定期的な TCP keep-alive を送ります。プローブが 2 回連続で応答なしになると、接続はリセットされます。

    • 最初のプローブは、無通信から約 30 秒後
    • 2 回目のプローブは、その 15 秒後
  • 接続の切断: 次の理由でも接続が閉じることがあります。

    • 負荷分散の判断
    • データセンターまたはノードのメンテナンス
    • 最大同時実行上限への到達
    • オリジンまたは中間ネットワークがアイドル接続を閉じた場合

メリット

メリット 説明
TCP ハンドシェイクの削減 複数のリクエストが 1 本の長寿命 TCP 接続を共有し、接続の増減を抑えます。
レイテンシの低減 繰り返しの TCP/TLS ハンドシェイクがなくなり、新規リクエストの往復遅延が減ります。
オリジン負荷の軽減 オリジンが管理する同時接続数が減り、リソースに余裕のないシステムでも負荷を抑えられます。
適応的なスケーリング フェイルオーバーなどの急増時は、まず空きストリームを再利用し、必要に応じて新しい接続を開きます。

プランごとのデフォルト

プラン デフォルト 接続あたりの最大同時ストリーム数 設定可能か
Free / Pro / Business デフォルトで有効 200 いいえ
Enterprise デフォルトで無効(接続あたり 1 ストリーム) 1–200+ はい
  • Free/Pro/Business: 多重化は自動で有効です。各接続は最大 200 の同時ストリームに対応します。
  • Enterprise: 多重化は実質無効(1 ストリーム)で始まります。ゾーンごとに同時実行数を有効化し、設定できます(最大 200 以上の同時ストリーム)。

設定

コネクション多重化は Free、Pro、Business ゾーンでデフォルト有効で、デフォルトでは最大 100 の同時ストリームを使います。Enterprise プランでは、ゾーンの最大同時ストリーム数(「多重化比率」と呼ばれることもあります)をダッシュボードまたは API で明示的に設定できます。

ダッシュボード

  1. Cloudflare ダッシュボード にログインし、アカウントを選びます。
  2. HTTP/2 to Origin を使うドメインを選びます。
  3. Speed > Optimization を選びます。
  4. Protocol Optimization タブを開きます。
  5. HTTP/2 to OriginConfigure を選び、必要に応じてストリーム設定を調整します。

API

Required API token permissions

At least one of the following token permissions is required:
  • Zone Settings Write
  • Zone Write
Change Origin H2 Max Streams Settingbash
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/settings/origin_h2_max_streams" \
	--request PATCH \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"value": 100
	}'

詳細は API ドキュメント を参照してください。

Terraform

resource "cloudflare_zone_setting" "example" {
  zone_id    = "<ZONE_ID>"
  setting_id = "origin_h2_max_streams"
  value      = 50
}

タイムアウトとエラーコード

条件 デフォルト / 範囲 エラーコード 説明
Proxy Read Timeout 125 秒(Enterprise は最大 6000 秒) 524 オリジンの応答が遅すぎました。
Proxy Idle Timeout 900 秒(固定) 520 アイドルのため接続が閉じられました。
TCP Keep-Alive Interval 最初は 30 秒、以降は 15 秒間隔 520 プローブが 2 回失敗すると、Cloudflare は接続をリセットします。
TCP Handshake Timeout 19 秒 522 オリジンが SYN ハンドシェイクを完了しませんでした。
TCP ACK Timeout 90 秒 522 オリジンがデータの確認応答を止めました。

よくあるシナリオ

フェイルオーバー時

トラフィックが急に切り替わるとき(オリジンのフェイルオーバーなど)、Cloudflare は可能な範囲でアクティブな接続を再利用します。同時実行上限に達すると、新しい接続を開きます。アクティブ接続数は一時的に増えることがありますが、全体の接続数は多重化なしより少なくなります。

長時間またはアイドルのリクエスト

  • リクエストが 125 秒を超える場合(ストリーミングなど)は、Proxy Read Timeout を増やします(Enterprise のみ)。
  • 900 秒より早く接続を閉じるオリジンでは接続の増減が増えることがありますが、Cloudflare は必要に応じて新しい接続を自動で再確立します。

5xx エラーの可能性

520522 などの一部の 5xx エラーは、アイドルタイムアウトや到達不能なオリジンが原因のことがあります。処理能力の低いオリジンに対して同時実行数が高すぎると、同時リクエストのバーストでオリジンが過負荷になり、ストリームのリセットや短時間の 5xx スパイクにつながることがあります。これに遭遇した Enterprise のお客様は、Cloudflare のアカウントチームまたはサポートに同時実行上限の引き下げを依頼できます。オリジンへ同時に送るリクエスト数が減り、過負荷を防げます。

よくある質問

Cloudflare は固定の多重化比率を使いますか?

Free、Pro、Business プランは、接続あたり 200 の同時ストリームを使います。Enterprise ユーザーは 1〜200 以上のストリームを設定できます。

スパイクやフェイルオーバー時、Cloudflare はどう接続を増やしますか?

Cloudflare はまず既存の keep-alive 接続を再利用します。同時実行上限に達すると、必要に応じて新しい接続を開きます。急増時でも、総接続数は通常、多重化なしより少なくなります。

バックエンドが並列リクエストに弱い場合は?

Enterprise ユーザーは同時実行上限を下げられます。Cloudflare はオリジンの SETTINGS_MAX_CONCURRENT_STREAMS も尊重するため、サーバー側でより厳しい上限を適用できます。Cloudflare の CDN には Cache Locking もあり、再検証時にオリジンへの並列リクエストを抑えます。詳細は 再検証 を参照してください。

同時実行数を段階的に上げられますか?

はい。オリジンの HTTP/2 設定、または Cloudflare のゾーン設定を段階的に調整し、安全に同時実行数を増やせます。

Cloudflare はどこからオリジンへ接続しますか?

Cloudflare はフラットな anycast ネットワークを運用しています。どのデータセンターからもオリジンへ直接接続でき、L1/L2 の階層はありません。オリジンへの接続は、世界中の複数データセンターから来る可能性があります。

Cloudflare はオリジンへの接続を事前に温めますか?

いいえ。接続はオンデマンドで作成し、可能な範囲で再利用します。アイドル接続の永続プールはありません。

アイドル接続はどう管理されますか?

アイドル接続は、無通信が 900 秒続くと閉じられます。先回りして再開はしません。トラフィックが再開すると、新しい接続が作られます。

Cloudflare はアクティブな TCP 接続を閉じることがありますか?

オリジンが閉じた場合、ネットワークエラーが起きた場合、または Cloudflare がメンテナンスや負荷の再配分を行う場合だけです。アクティブ接続にハードな最大寿命はありません。

プロトコル互換性

オリジンが HTTP/2 に対応していない場合、Cloudflare は HTTP/1.1 接続を開始します。 ALPN で HTTP/2 対応を通知するサーバーに接続します。

サーバーが HTTP/2 に対応しているか不明な場合は、オリジンサーバーのドキュメントを確認するか、HTTP/2 実装のテストツール(例: h2spec)を使うことを推奨します。

役に立ちましたか?