概要

  • 現在対応している案件を通して、CloudFront のHTTP/1.1、HTTP/2 サポートについて調査しました。備忘録として、まとめます。

CloudFront がサポートするHTTPバージョン

  • CloudFront は、HTTP/2 をサポートします。クライアントがHTTP/2でアクセスする場合、クライアントからCloudFront間はHTTP/2で通信するため、HTTP/1.1と比べレイテンシが短くなります。また、クライアントがHTTP/2をサポートしない場合は、HTTP/1.1で通信が行われます。
  • CloudFront のディストリビューション設定で、「HTTP/2, HTTP/1.1, HTTP/1.0」を指定します。

CloudFrontとオリジン間のHTTPバージョン

CloudFrontとオリジン間は、常にHTTP/1.1が使われるよ!

  • クライアントからCloudFront間の通信がHTTP/2 であっても、CloudFrontからオリジン間は常にHTTP/1.1 を使用した通信となります。
  • オリジンに使用するWebサーバーのアクセスログでも、HTTP/1.1で通信していることが確認できます。
x.x.x.x - - [22/Apr/2020:02:28:07 +0000] "GET /index.html HTTP/1.1" 200 150 "-" "Amazon CloudFront"

オリジンにHTTP/2 の通信を通過させたいとき

  • CloudFrontを使用した場合、CloudFrontとオリジン間はHTTP/1.1の通信となるため、アプリケーション側(オリジン)で HTTP/2 での通信が必要になる場合は、CloudFrontの構成は適切ではありません。クライアントからダイレクトにELBに接続するなどのアーキテクチャの変更が必要となります。
    • 上記構成変更で、ELBにALB(Application Load Balancer)を使用する場合は、HTTP/2 をサポート。
    • 上記構成変更で、NLB(Network Load Balancer)を使用する場合、NLBではHTTP/2がサポートされません。NLBはALPN(アプリケーション層でのプロトコルネゴシエーション)に対応していないため。NLB構成の回避策は、NLBでパススルーして(TLSを終端せず)、バックエンドのサーバー側でTLSを終端する方法が必要となります。

参考資料

Amazon CloudFront のグローバルコンテンツ配信ネットワーク (CDN) のすべてのよくある質問を取得します。Amazon CloudFront は、データ、動画、アプリケーション、および API をすべて開発者にとって使いやすい環境で、低レイテンシーの高速転送により視聴者に安全...

元記事はこちら

CloudFront のHTTP/2サポート