表示の流れ | Amazon 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 |
表示テスト
オリジンリクエストポリシー
- ビューワーリクエスト:https://example.com/blog/index.html
| オリジンリクエストポリシー | 表示 | 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にホスト名とポート番号が値として入る。