WebサイトはHTTP/1.1のCONNECTトンネルを通してHTTP/2で応答できます。サイトとのTLSセッションは、クライアントからプロキシへの接続とは独立して接続先のプロトコルを交渉します。逆も同様で、HTTPSプロキシへの接続にHTTP/2を使っても、WebサイトにHTTP/2を強制するわけではありません。

外側の接続を意識してテストするため、curl 8.1.0には--proxy-http2が追加されました。

curl --proxy https://proxy.example:8443 --proxy-http2 --connect-timeout 5 --max-time 15 --verbose https://example.com/

実際のHTTPSプロキシとHTTP/2対応のcurlビルドを使います。curl --versionを確認し、詳細出力の交渉過程を読んでください。プロキシがHTTP/1だけを提示すればcurlはそれを使います。このオプションで通常のHTTPやSOCKSの待ち受け先にHTTP/2が有効になるわけではありません。

プロキシとの交渉と最終転送のHTTPバージョンは分けて記録します。応答のバージョンや最終転送のwrite-out値は、外側のプロキシ接続を自動的に示すものではありません。

公開HTTPプロキシリストの接続先では、まず対応するトランスポートと完全なリクエストで確認します。このオプションを加えるのは、実際にHTTPSプロキシがあり、その外側の対応能力を試したい場合です。サイトがHTTP/2対応だからという理由ではありません。同じHTTP/2サイトに到達するプロキシ同士でも、経路、負荷、接続確立時間が異なり得ます。サイトのバージョンだけでは性能を説明できません。

関連記事