#
ドキュメント

Document

自分のための備忘録です。

CloudFront 表示フロー

CloudFront と オリジンに発行される HTTP リクエストの Host ヘッダーについて記載します。

構成

カスタムドメイン

ドメイン
example.com

オリジン

オリジン オリジンドメイン
オリジン1 origin1.example.com
オリジン2 origin2.example.com

ビヘイビア

パスパターン オリジン
https://example.com origin1.example.com
https://example.com/blog origin2.example.com

Apache

Name ベースの VirtualHost を設定している。 設定ファイルは以下 ServerName ディレクティブを指定したファイルのみとして進める。

オリジン ServerName ディレクティブ
origin1.example.com origin1.example.com
origin2.example.com origin2.example.com

表示テスト

オリジンリクエストポリシー

オリジンリクエストポリシー 表示 Apache アクセスログの Host ヘッダー
AllViewer example.com
AllViewerExceptHostHeader origin2.example.com

アクセスログに HOST ヘッダー を記録

HTTP リクエストの Host ヘッダーを記録するように Apache のアクセスログのフォーマットを変更する。

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Host}i\"" combinedhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combinedhost

表示の仕組み

ビューワーが https://example.com/blog/index.html に HTTP リクエストをした表示フロー。

  • ビヘイビアのオリジンリクエストポリシーが AllViewer の場合
    • CloudFront からオリジンの HTTP リクエストの Host ヘッダーには、ビューワーが発行する example.com が使用される
    • ↑より Apache で VirtualHost を使用している場合は ServerName ディレクティブが example.com の設定ファイルが使用される
    • ServerName が example.com の設定ファイルがなければ、デフォルトの設定ファイル( 000-default.conf )が使用される
    • 設定ファイルが1つしかない場合はその設定ファイルが使用される
  • ビヘイビアのオリジンリクエストポリシーが AllViewerExceptHostHeader の場合
    • CloudFront からオリジンの HTTP リクエストの Host ヘッダーは origin2.example.com が使用される
    • ↑より Apache で VirtualHost を使用している場合は ServerName ディレクティブが orgin2.example.com の設定ファイルが使用される
    • ServerName が origin2.example.com の設定ファイルがなければ、デフォルトの設定ファイル( 000-default.conf )が使用される
    • 設定ファイルが1つしかない場合はその設定ファイルが使用される

Host ヘッダー

HTTP 1.1 ではHostヘッダーは必須になるが、HTTP/2では代わりに疑似ヘッダーである:authorityにホスト名とポート番号が値として入る。

ref. ウェブの基礎 ヘッダーについて改めて調べてみた