Skip to content

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

プロトコル問題のトラブルシューティング

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

このガイドでは、HTTP/2 と HTTP/3 の一般的な問題(オリジン非互換、多重化エラー、ブラウザーエラー)を取り上げ、切り分けと対処の手順を説明します。

H2 to Origin - オリジンの非互換

  • オリジンの max_concurrent_streams は、ハンドシェイク中にネゴシエートされます。
  • GOAWAY(0) を受け取った場合は、サーバー再起動などにより、サーバーが新しいストリームを拒否している可能性が高いです。
  • 詳細は RFC 9113 - SETTINGS_MAX_CONCURRENT_STREAMS を参照してください。

H2 Multiplexing - オリジンの非互換 / 問題

  • 多重化の問題は、サーバー設定の誤りで起きることがあります。
  • netlogs を使い、SETTINGS_MAX_CONCURRENT_STREAMS の違反や予期しない GOAWAY フレームを特定します。
  • 詳細は Stream Concurrency Issues を参照してください。

一般的なブラウザーエラー

よくあるブラウザーエラーは次のとおりです。

  • ERR_HTTP2_PROTOCOL_ERROR
  • ERR_HTTP3_PROTOCOL_ERROR
  • ERR_QUIC_PROTOCOL_ERROR

これらのエラーは、必ずしもプロトコルレベルの問題を意味しません。次の手順で確認します。

  1. HTTP/1.1 で再現を試みます。
  2. HTTP/1.1 でも問題が続く場合は、HTTP/2 や HTTP/3 を試す前に、根本のエラーに対処します。
  3. 問題が再現しない場合は、HTTP/2 または HTTP/3 固有の問題がないか netlogs を分析します。

詳細は Chromium URL Request Header を参照してください。

Chrome で HTTP/3 のときだけ停止または失敗する

問題が Chrome の HTTP/3 だけで再現し、HTTP/3 を無効にすると消える場合、オリジンサーバーではなく、ブラウザー側の QUIC 処理に関係していることがあります。これは既知の Chrome の問題(crbug.com/41161335)です。Cloudflare の QUIC 実装が原因ではありません。

症状の例は次のとおりです。

  • 大きなダウンロードが突然止まる。
  • 同時リクエストが多いページが 1〜3 分ハングしたあと失敗する。
  • 接続が進まなくなったあと、Chrome が ERR_QUIC_PROTOCOL_ERROR または ERR_HTTP3_PROTOCOL_ERROR を報告する。
  • Firefox や Safari では再現しない。
  • chrome://flags で QUIC を無効にすると解消する。

問題を切り分ける

  1. ゾーンの HTTP/3 を一時的に無効にします。
  2. 同じリクエストを HTTP/2 で再テストします。
  3. HTTP/2 では問題が消える場合、Chrome の NetLog を取得して動作を比較します。

すぐに試す: Chrome で chrome://flags を開き、「QUIC」を検索して Disabled に設定し、Chrome を再起動します。

対処

特定のホスト名だけで問題が起きる場合は、より限定した回避策を使えます。影響のあるホスト名について、Alt-Svc ヘッダーを削除する Response Header Modification Transform Rule を作成します。

  1. Cloudflare ダッシュボードで、Rules の Overview ページを開きます。
  2. Create rule > Response Header Transform Rule を選択します。
  3. 一致条件をホスト名に設定します: (http.host eq "example.com")
  4. Modify response headerRemove を選び、ヘッダー名に Alt-Svc を入力します。

これで、HTTP/3 を全体で無効にせず、そのホスト名では Chrome に HTTP/2 を使わせます。ただし、プロキシされたホスト名は生成された HTTPS レコードでも HTTP/3 を告知できるため、切り分け中に HTTP/2 へ確実に寄せるには、ゾーンの HTTP/3 を無効にするのが最も確実です。

Alt-Svc を変更したあと、ブラウザーは告知された代替サービスを最大 24 時間キャッシュする場合があることに注意してください。

役に立ちましたか?