翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Lightsail ディストリビューションのリクエストとレスポンスの動作を管理する
このガイドでは、リクエストを処理してオリジンに転送し、オリジンからのレスポンスを処理する際の Amazon Lightsail ディストリビューションの動作について説明します。ディストリビューションの詳細については、「コンテンツ配信ネットワークディストリビューション」を参照してください。
トピック
ディストリビューションがリクエストを処理してオリジンに転送する方法
このトピックには、ディストリビューションがビューワーリクエストを処理してオリジンに転送する方法に関する情報が含まれています。
目次
認証
DELETE
、GET
、HEAD
、PATCH
、POST
、PUT
リクエストの場合、Authorization
ヘッダーをオリジンに転送するように ディストリビューションを設定すると、クライアント認証を要求するようにオリジンサーバーを設定できます。
OPTIONS
リクエストの場合、次のディストリビューション設定を使用した場合のみ、クライアント認証を要求するようにオリジンサーバーを設定することができます。
-
Authorization
ヘッダーをオリジンに転送するようにディストリビューションを設定する。 -
OPTIONS
リクエストへの応答をキャッシュしないようにディストリビューションを設定する。
HTTP または HTTPS のいずれかを使用してオリジンにリクエストを転送するようにディストリビューションを構成することができます。
キャッシュ期間
ディストリビューションが別のリクエストをオリジンに転送するまでにオブジェクトをキャッシュに保持する時間をコントロールするには :
-
Cache-Control
またはExpires
ヘッダーフィールドを各オブジェクトに追加するようにオリジンを構成します。 -
キャッシュ寿命 (TTL) には、デフォルト値の 1 日を使用します。
ディストリビューション設定の詳細については、「ディストリビューションアドバンスト設定」
クライアント IP アドレス
ビューワーがリクエストをディストリビューションに送信し、X-Forwarded-For
リクエストヘッダーを含めない場合、ディストリビューションは TCP 接続からビューワーの IP アドレスを取得して、IP アドレスが含まれた X-Forwarded-For
ヘッダーを追加し、リクエストをオリジンに転送します。たとえば、ディストリビューションが TCP 接続から IP アドレス 192.0.2.2
を取得する場合、以下のヘッダーをオリジンに転送します。
X-Forwarded-For: 192.0.2.2
ビューワーがリクエストをディストリビューションに転送して X-Forwarded-For
リクエストヘッダーを含める場合、 ビューワーの IP アドレスを TCP 接続から取得してそれを X-Forwarded-For
ヘッダーの末尾に追加し、リクエストをオリジンに転送します。たとえば、ビューワーのリクエストに X-Forwarded-For: 192.0.2.4,192.0.2.3
が含まれ、ディストリビューションが TCP 接続から IP アドレス 192.0.2.2
を取得する場合、以下のヘッダーをオリジンに転送します。
X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2
ロードバランサー (Elastic Load Balancing を含む)、ウェブアプリケーションファイアウォール、リバースプロキシ、侵入防御システム、API Gateway などの一部のアプリケーションでは、リクエストを転送したディストリビューションエッジサーバーの IP アドレスを X-Forwarded-For
ヘッダーの末尾に付加します。たとえば、ディストリビューションから ELB に転送するリクエストに X-Forwarded-For: 192.0.2.2
が含まれていて、 エッジサーバーの IP アドレスが 192.0.2.199 である場合、インスタンスで受け取るリクエストのヘッダーは次のようになります。
X-Forwarded-For: 192.0.2.2,192.0.2.199
注記
X-Forwarded-For
ヘッダーには、IPv4 アドレス (192.0.2.44 など) および IPv6 アドレス (2001:0db8:85a3:0000:0000:8a2e:0370:7334 など) が含まれます。
クライアント側の SSL 認証
Lightsail ディストリビューションは、クライアント側の SSL 証明書によるクライアント認証をサポートしていません。オリジンがクライアント側証明書をリクエストした場合、 ディストリビューションはリクエストを削除します。
圧縮
Lightsail ディストリビューションは、Accept-Encoding
フィールド値 "identity"
および を持つリクエストを転送します"gzip"
。
条件付きリクエスト
ディストリビューションは、エッジキャッシュで有効期限切れになっているオブジェクトに対するリクエストを受け取ると、リクエストをオリジンに転送し、オブジェクトの最新バージョンを取得するか、 エッジキャッシュに最新バージョンが既に存在することをオリジンに確認します。通常、オリジンはオブジェクトをディストリビューションに最後に送信するときに、ETag
値または LastModified
値、あるいはその両方の値をレスポンスに含めます。ディストリビューションがオリジンに転送する新しいリクエストには、次のどちらかまたは両方を追加します。
-
オブジェクトの有効期限切れバージョンの
If-Match
値が含まれるIf-None-Match
またはETag
ヘッダー。 -
オブジェクトの有効期限切れバージョンの
If-Modified-Since
値が含まれるLastModified
ヘッダー。
オリジンは、この情報を使用して、オブジェクトが更新されているかどうかを判別します。つまり、オブジェクト全体をディストリビューションに返すか、または HTTP 304 ステータスコード (変更なし) のみを返すかを判別します。
cookie
Cookie をオリジンに転送するようにディストリビューションを構成できます。詳細については、「ディストリビューションアドバンスト設定」
クロスオリジンリソース共有 (CORS)
ディストリビューションで Cross-Origin Resource Sharing 設定を尊重する場合は、 Origin
ヘッダーをオリジンに転送するように設定します。
暗号化
ビューワーに HTTPS を使用してディストリビューションに接続するように要求し、HTTP または HTTPS を使用してリクエストをオリジンに転送するようにディストリビューションに要求することができます。
ディストリビューションは、SSLv3、TLSv1.0、TLSv1.1、および TLSv1.2 プロトコルを使用して、HTTPS リクエストをオリジンに転送します。SSL と TLS のその他のバージョンはサポートされていません。
本文を含む GET リクエスト
ビューワーの GET
リクエストの本文が含まれている場合、 ディストリビューションはビューワーに HTTP ステータスコード 403 (禁止) を返します。
HTTP メソッド
サポートするすべての HTTP メソッドを許可するようディストリビューションを構成すると、ディストリビューションはビューワーからの以下のリクエストを受け入れてオリジンに転送します。
-
DELETE
-
GET
-
HEAD
-
OPTIONS
-
PATCH
-
POST
-
PUT
ディストリビューションは、GET
リクエストと HEAD
リクエストへの応答を常にキャッシュします。OPTIONS
リクエストへの応答をキャッシュするように設定することもできます。ディストリビューションはその他のメソッドを使用するリクエストへのレスポンスをキャッシュしません。
オリジンが上記のメソッドを処理するかどうかを構成する方法の詳細については、オリジンのドキュメントを参照してください。
重要
ディストリビューションがサポートするすべての HTTP メソッドを受け入れてオリジンに転送するように設定する場合、オリジンサーバーがすべてのメソッドを処理するように構成します。たとえば、POST
を使用するために、上記のメソッドを受け入れて転送するようにディストリビューションを構成する場合は、DELETE
リクエストを適切に処理するようオリジンサーバーを設定して、削除すべきでないリソースをビューワーが削除できないようにする必要があります。詳細については、HTTP サーバーのドキュメントを参照してください。
HTTP リクエストヘッダーとディストリビューション動作
次の表は、オリジンに転送できる HTTP リクエストヘッダーを示しています (例外も注記されています)。この表には、各ヘッダーについて以下に関する情報も含まれています。
-
サポート - そのヘッダーの値に基づいてオブジェクトをキャッシュするようにディストリビューションを設定できるかどうか。
Date
およびUser-Agent
ヘッダーの値に基づいてオブジェクトをキャッシュするようにディストリビューションを設定できますが、これはお勧めできません。これらのヘッダーには可能な値が多数あり、その値に基づいてキャッシュすると、ディストリビューションがオリジンに転送するリクエストの数が大幅に増加します。 -
設定していない場合の動作 - ヘッダーをオリジンに転送するように設定していない場合、ディストリビューションはヘッダー値に基づいてオブジェクトをキャッシュします。
-
ヘッダー - 他の定義されたヘッダー
サポート - あり
設定されていない場合の動作 - ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Accept
サポート - あり
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Accept-Charset
サポート - あり
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Accept-Encoding
サポート - あり
設定されていない場合の動作 - 値に
gzip
が含まれる場合、ディストリビューションはAccept-Encoding: gzip
をオリジンに転送します。値にgzip
が含まれない場合、ディストリビューションはリクエストをオリジンに転送する前にAccept-Encoding
ヘッダーフィールドを削除します。 -
ヘッダー -
Accept-Language
サポート - あり
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Authorization
サポート - あり
設定されていない場合の動作:
-
GET
、HEAD
の各リクエスト – ディストリビューションは、リクエストをオリジンに転送する前にAuthorization
ヘッダーフィールドを削除します。 -
OPTIONS
リクエスト –OPTIONS
リクエストへの応答をキャッシュするようにディストリビューションを設定した場合、ディストリビューションは、リクエストをオリジンに転送する前に、Authorization
ヘッダーフィールドを削除します。OPTIONS リクエストへの応答をキャッシュするようにディストリビューションを設定しなかった場合、ディストリビューションは
Authorization
ヘッダーフィールドをオリジンに転送します。 -
DELETE
、PATCH
、POST
、PUT
の各リクエスト – ディストリビューションは、リクエストをオリジンに転送する前にヘッダーフィールドを削除しません。
-
-
ヘッダー -
Cache-Control
サポート - なし
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
CloudFront-Forwarded-Proto
サポート - あり
設定されていない場合の動作 - ディストリビューションは、リクエストをオリジンに転送する前にヘッダーを追加しません。
-
ヘッダー -
CloudFront-Is-Desktop-Viewer
サポート - あり
設定されていない場合の動作 - ディストリビューションは、リクエストをオリジンに転送する前にヘッダーを追加しません。
-
ヘッダー -
CloudFront-Is-Mobile-Viewer
サポート - あり
設定されていない場合の動作 - ディストリビューションは、リクエストをオリジンに転送する前にヘッダーを追加しません。
-
ヘッダー -
CloudFront-Is-Tablet-Viewer
サポート - あり
設定されていない場合の動作 - ディストリビューションは、リクエストをオリジンに転送する前にヘッダーを追加しません。
-
ヘッダー -
CloudFront-Viewer-Country
サポート - あり
設定されていない場合の動作 - ディストリビューションは、リクエストをオリジンに転送する前にヘッダーを追加しません。
-
ヘッダー -
Connection
サポート - なし
設定されていない場合の動作 - ディストリビューションは、オリジンに転送する前に、このヘッダーを
Connection: Keep-Alive
で置き換えます。 -
ヘッダー -
Content-Length
サポート - なし
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Content-MD5
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Content-Type
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Cookie
サポート - なし
設定されていない場合の動作 - Cookie を転送するようにディストリビューションを設定している場合、
Cookie
ヘッダーフィールドをオリジンに転送します。そうでない場合、ディストリビューションはCookie
ヘッダーフィールドを削除します。 -
ヘッダー -
Date
サポート対象 - あり、ただし推奨されません
設定されていない場合の動作 - ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Expect
サポート - あり
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
From
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Host
サポート - あり
設定されていない場合の動作 - ディストリビューションは、リクエストされたオブジェクトに関連付けられたオリジンのドメイン名に値を設定します。
-
ヘッダー -
If-Match
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
If-Modified-Since
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
If-None-Match
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
If-Range
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
If-Unmodified-Since
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Max-Forwards
サポート - なし
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Origin
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Pragma
サポート - なし
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Proxy-Authenticate
サポート - なし
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Proxy-Authorization
サポート - なし
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Proxy-Connection
サポート - なし
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Range
サポート対象 - あり (デフォルト)
設定されていない場合の動作 - ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Referer
サポート - あり
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Request-Range
サポート - なし
設定されていない場合の動作 - > ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
TE
サポート - なし
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Trailer
サポート - なし
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
Transfer-Encoding
サポート - なし
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Upgrade
サポート - なし (接続を除く WebSocket)
設定されていない場合の動作 - WebSocket 接続を確立しない限り、ディストリビューションは ヘッダーを削除します。
-
ヘッダー -
User-Agent
サポート - あり、ただし推奨されません
設定されていない場合の動作 - ディストリビューションはこのヘッダーフィールドの値を
Amazon CloudFront
で置き換えます。 -
ヘッダー -
Via
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
Warning
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
X-Amz-Cf-Id
サポート - なし
設定されていない場合の動作 - ディストリビューションは、リクエストをオリジンに転送する前に、ビューワーリクエストにヘッダーを追加します。ヘッダー値には、リクエストを一意に識別する暗号化された文字列が含められます。
-
ヘッダー -
X-Edge-*
サポート - なし
設定されていない場合の動作 - あなたのディストリビューションは、すべての
X-Edge-*
ヘッダー。 -
ヘッダー -
X-Forwarded-For
サポート - あり
設定されていない場合の動作-ディストリビューションはヘッダーをオリジンに転送します。
-
ヘッダー -
X-Forwarded-Proto
サポート - なし
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
-
ヘッダー -
X-Real-IP
サポート - なし
設定されていない場合の動作 - ディストリビューションはヘッダーを削除します。
HTTP バージョン
ディストリビューションは HTTP/1.1 を使用してオリジンにリクエストを転送します。
リクエストの最大長と URL の最大長
パス、クエリ文字列 (ある場合)、ヘッダーを含め、リクエストの最大長は 20480 バイトです。
ディストリビューションはリクエストから URL を構築します。この URL の最大長は 8192 文字です。
リクエストまたは URL がこの最大制限を超えると、ディストリビューションは、リクエストエンティティが長すぎることを示す HTTP ステータスコード 413 (Request Entity Too Large) をビューワーに返してから、ビューワーへの TCP 接続を終了します。
OCSP Stapling
オブジェクトに対する HTTPS リクエストをビューワーが送信する際には、ドメインの SSL 証明書が無効になっていないことをディストリビューションまたはビューワーが認証機関 (CA) に対して確認する必要があります。OCSP Stapling を使用すると、ディストリビューションで証明書を検証して CA からの応答をキャッシュできるため、クライアントが直接 CA に対して証明書を検証する必要がなくなり、証明書の検証速度が向上します。
同一ドメイン内のオブジェクトに対する多数の HTTPS リクエストをディストリビューションが受信した場合は、OCSP Stapling によるパフォーマンス向上がさらに顕著になります。エッジロケーション内の各サーバーは、別々の検証リクエストを送信する必要があります。同一ドメインに対する多数の HTTPS リクエストを が受信するとすぐに、エッジロケーション内のすべてのサーバーが、SSL ハンドシェイクでパケットに "ステープリング" できるという CA からの応答を受信します。証明書が有効であることをビューワーが確認すると、ディストリビューションはリクエストされたオブジェクトを提供できます。エッジロケーション内でディストリビューションが十分なトラフィックを確保できない場合、新しいリクエストは、CA に対して証明書がまだ検証されていないサーバーに誘導される可能性が高くなります。この場合は、ビューワーが検証ステップを別途実行し、ディストリビューションサーバーがオブジェクトを提供します。このディストリビューションサーバーも CA に検証リクエストを送信するため、同じドメイン名が含まれるリクエストを次に受信したときには、CA からの検証応答が既に存在しているということになります。
永続的接続
ディストリビューションがオリジンからレスポンスを取得すると、その期間中に別のリクエストが届くのに備え、数秒間、接続を維持しようとします。持続的接続を維持すると、TCP 接続の再構築に必要な時間と後続のリクエストに対する別の TLS ハンドシェイクの実行に必要な時間を節約できます。
プロトコル
ディストリビューションは、Lightsail コンソール のオリジンプロトコルポリシーフィールドの値に基づいて、HTTP または HTTPS リクエストをオリジンサーバーに転送します。Lightsail コンソールでは、オプションは HTTP のみ、HTTPS のみです。
[HTTP のみ] または [HTTPS のみ] を指定すると、ディストリビューションは、ビューワーリクエストのプロトコルに関係なく、指定されたプロトコルのみを使用してリクエストをオリジンに転送します。
重要
ディストリビューションが HTTPS プロトコルを使用してリクエストをオリジンに転送し、オリジンサーバーから無効な証明書または自己署名証明書が返された場合、ディストリビューションは TCP 接続を中断します。
クエリ文字列
ディストリビューションがクエリ文字列パラメータをオリジンに転送するかどうかを設定できます。
オリジン接続のタイムアウトと試行
デフォルトでは、ディストリビューションはセカンダリオリジンへの接続を試行したり、エラーレスポンスを返したりする前に 30 秒 (それぞれ 10 秒間の試行が 3 回) 待機します。
オリジン応答タイムアウト
オリジン応答タイムアウト (オリジンの読み取りタイムアウトまたはオリジンリクエストタイムアウトとも呼ばれます) は、次の両方に適用されます。
-
ディストリビューションがリクエストをオリジンに転送してからレスポンスを受け取るまでの待機時間 (秒)
-
ディストリビューションがオリジンからレスポンスのパケットを受け取ってから次のパケットを受け取るまでの待機時間 (秒)
ディストリビューションの動作は、ビューワーリクエストの HTTP メソッドによって決まります。
-
GET
およびHEAD
リクエスト ― 応答タイムアウトの期間内にオリジンが応答しない場合、または応答を停止した場合、ディストリビューションは接続を中断します。指定されたオリジン接続の試行回数が 1 回を超える場合、ディストリビューションは完全な応答の取得を再試行します。オリジン接続の試行回数設定の値で決められているように、ディストリビューションは最大 3 回試行します。最後の試行でもオリジンが応答しない場合、ディストリビューションは同じオリジンのコンテンツに対する別のリクエストを受け取るまで接続を試みません。 -
DELETE
、OPTIONS
、PATCH
、PUT
、POST
の各リクエスト – オリジンが 30 秒以内に応答しない場合、ディストリビューションは接続を中断し、オリジンへの接続を再試行しません。クライアントは、必要に応じてリクエストを再送信できます。
同じオブジェクト (トラフィックスパイク) の同時リクエスト
ディストリビューションエッジロケーションがオブジェクトのリクエストを受け取り、オブジェクトが現在キャッシュにないか、有効期限が切れている場合、ディストリビューションはすぐにオリジンにリクエストを送信します。トラフィックスパイクがある場合 (同じオブジェクトへの追加のリクエストが、オリジンが最初のリクエストに応答する前にエッジロケーションに届く場合)、ディストリビューションは短時間一時停止してから、オブジェクトへの追加のリクエストをオリジンに転送します。通常、最初のリクエストへのレスポンスは、それ以降のリクエストに対するレスポンスの前に、ディストリビューションエッジロケーションに届きます。この短い停止により、オリジンサーバーでの不要な負荷が減ります。リクエストヘッダーや Cookie に基づいてキャッシュするようにディストリビューションを設定した場合など、追加のリクエストが同じでない場合、ディストリビューションはすべての一意のリクエストをオリジンに転送します。
ユーザーエージェントヘッダー
ユーザーがコンテンツの表示に使用しているデバイスに基づいて、オブジェクトの異なるバージョンを ディストリビューションでキャッシュするには、次の 1 つ以上のヘッダーをオリジンに転送するように ディストリビューションを設定することをお勧めします。
-
CloudFront-Is-Desktop-Viewer
-
CloudFront-Is-Mobile-Viewer
-
CloudFront-Is-SmartTV-Viewer
-
CloudFront-Is-Tablet-Viewer
ディストリビューションは、User-Agent
ヘッダーの値に基づいて、これらのヘッダーの値を true
または false
に設定した後、リクエストをオリジンに転送します。デバイスが複数のカテゴリに属する場合は、複数の値が true
になることがあります。たとえば、あるタブレットデバイスについて、ディストリビューションがCloudFront-Is-Mobile-Viewer
と CloudFront-Is-Tablet-Viewer
の両方を true
に設定する場合があります。
User-Agent
ヘッダーの値に基づいてオブジェクトをキャッシュするようにディストリビューションを設定できますが、これはお勧めできません。User-Agent
ヘッダーには可能な値が多数あり、その値に基づいてキャッシュすると、ディストリビューションがオリジンに転送するリクエストの数が大幅に増加します。
ディストリビューションが User-Agent
ヘッダーの値に基づいてオブジェクトをキャッシュするように設定しない場合、ディストリビューションは以下の値を指定した User-Agent
ヘッダーを追加して、リクエストをオリジンに転送します。
User-Agent = Amazon CloudFront
ディストリビューションは、ビューワーからのリクエストに User-Agent
ヘッダーが含まれているかどうかに関係なく、このヘッダーを追加します。ビューワーからのリクエストに User-Agent
ヘッダーが含まれる場合、ディストリビューションはそのヘッダーを削除します。
ディストリビューションがオリジンからの応答を処理する仕組み
このトピックには、 オリジンからのレスポンスを ディストリビューショが処理する方法に関する情報が含まれています。
目次
100-continue レスポンス
オリジンは複数の 100-continue レスポンスをディストリビューションに送信することはできません。最初の 100-continue レスポンスの後で、ディストリビューションは HTTP 200 OK レスポンスを予期します。オリジンが最初のレスポンスの後に別の 100-continue レスポンスを送信すると、ディストリビューションはエラーを返します。
キャッシュ
-
オリジンが
Date
およびLast-Modified
ヘッダーフィールドに有効かつ正確な値を設定していることを確認します。 -
ビューワーからのリクエストに
If-Match
またはIf-None-Match
リクエストヘッダーフィールドが含まれる場合、ETag
レスポンスヘッダーフィールドを設定します。ETag
の値が指定されていない場合、ディストリビューションは以降のIf-Match
またはIf-None-Match
ヘッダーを無視します。 -
通常、ディストリビューションはオリジンからのレスポンスの
Cache-Control: no-cache
ヘッダーを優先します。例外については、「同じオブジェクトに対する同時要求(トラフィックの急増)」を参照してください。
取り消されたリクエスト
オブジェクトがエッジキャッシュになく、ディストリビューションがオブジェクトをオリジンから取得したものの、リクエストされたそのオブジェクトを配信する前にビューワーがセッションを終了すると (ブラウザを閉じるなど)、ディストリビューションはそのオブジェクトをエッジロケーションにキャッシュしません。
コンテンツネゴシエーション
オリジンが応答で Vary:*
を返し、対応するキャッシュ動作の [最小 TTL] の値が [0] の場合、ディストリビューションはオブジェクトをキャッシュしますが、そのオブジェクトの後続のすべてのリクエストをオリジンに転送して、キャッシュにオブジェクトの最新バージョンが含まれていることを確認します。ディストリビューションには、If-None-Match
や If-Modified-Since
などの条件付きヘッダーは含まれません。その結果、オリジンはすべてのリクエストに応じてディストリビューションにオブジェクトを返します。
オリジンがレスポンスVary:*
で を返し、対応するキャッシュ動作の最小 TTL の値が他の値である場合、 はディストリビューションが を削除または置き換える HTTP レスポンスヘッダーで説明Vary
されているように ヘッダー CloudFront を処理します。 ディストリビューションが削除または置き換える HTTP レスポンスヘッダー
cookie
キャッシュ動作の Cookie を有効にしており、オリジンが Cookie とオブジェクトを返す場合、ディストリビューションはオブジェクトと Cookie の両方をキャッシュします。これにより、オブジェクトのキャッシュ性能が低下することに注意してください。
切断された TCP 接続
オリジンがオブジェクトをディストリビューションに返している間にディストリビューションとオリジン間の TCP 接続が中断した場合、ディストリビューションの動作は、オリジンが Content-Length
ヘッダーをレスポンスに含めたかどうかによって異なります。
-
Content-Length ヘッダー – ディストリビューションは、オブジェクトをオリジンから取得すると、ビューワーにオブジェクトを返します。ただし、
Content-Length
ヘッダーの値がオブジェクトのサイズに一致しない場合、ディストリビューションはオブジェクトをキャッシュしません。 -
Transfer-Encoding: Chunked – ディストリビューションは、オブジェクトをオリジンから取得すると、ビューワーにオブジェクトを返します。ただし、チャンクレスポンスが完了していない場合、ディストリビューションはオブジェクトをキャッシュしません。
-
Content-Length ヘッダーなし – ディストリビューションはオブジェクトをビューワーに返して、オブジェクトをキャッシュしますが、オブジェクトが完全でない可能性があります。
Content-Length
ヘッダーがない場合、ディストリビューションは、TCP 接続が誤って中断されたか、または故意に中断されたかを判断できません。
Content-Length
ヘッダーを追加して、ディストリビューションが不完全なオブジェクトをキャッシュしないように HTTP サーバーを設定することをお勧めします。
ディストリビューションが削除または置き換える HTTP レスポンスヘッダー
ディストリビューションは、 オリジンからのレスポンスをビューワーに転送する前に、以下のヘッダーフィールドを削除または更新します。
-
Set-Cookie
- Cookie を転送するようにディストリビューションを設定している場合、Set-Cookie
ヘッダーフィールドがクライアントに転送されます。 -
Trailer
-
Transfer-Encoding
- オリジンがこのヘッダーフィールドを返す場合、ディストリビューションは値をchunked
に設定してからビューワーにレスポンスを返します。 -
Upgrade
-
Vary
– 次の点に注意してください。-
デバイス固有のヘッダーのいずれかをオリジン (
CloudFront-Is-Desktop-Viewer
、CloudFront-Is-Mobile-Viewer
、CloudFront-Is-SmartTV-Viewer
、CloudFront-Is-Tablet-Viewer
) に転送するようにディストリビューションを設定しており、オリジンがVary:User-Agent
をディストリビューションに返すように設定している場合、ディストリビューションはVary:User-Agent
をビューワーに返します。 -
Vary
ヘッダーに、Accept-Encoding
またはCookie
のいずれかを含めるよう設定した場合、ディストリビューションはビューワーへの応答にその値を含めます。 -
ヘッダーの許可リストをオリジンに転送するようにディストリビューションを設定し、ヘッダー名を ヘッダー
Vary
のディストリビューション ( などVary:Accept-Charset,Accept-Language
) に返すようにオリジンを設定すると、ディストリビューションはそれらの値を持つVary
ヘッダーをビューワーに返します。 -
ディストリビューションが、
*
のVary
ヘッダーの値を処理するかについて詳しくは「コンテンツネゴシエーション」を参照してください。 -
Vary
ヘッダーで他の値を返すようにオリジンを設定している場合、ディストリビューションは応答をビューワーに返す前にその値を削除します。
-
-
Via
– ディストリビューションは、ビューワーへの応答で値を次のように設定します。Via:
http-version
alphanumeric-string
.cloudfront.net (CloudFront)
たとえば、クライアントが HTTP/1.1 を介してリクエストを行った場合、値は次のようになります。
Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)
最大ファイルサイズ
ディストリビューションがビューワーに返すレスポンス本文の最大サイズは 20 GB です。これには、Content-Length
ヘッダーの値を指定しないチャンク転送レスポンスが含まれます。
使用できないオリジン
オリジンサーバーが使用できないときに、ディストリビューションがエッジキャッシュに存在するオブジェクトのリクエストを受け取り、そのオブジェクトが (たとえば Cache-Control max-age
ディレクティブに指定された期間が経過しているために) 有効期限切れになっている場合、ディストリビューションは有効期限切れバージョンのオブジェクトを供給するか、またはカスタムエラーページを供給します。
場合によって、要求頻度の低いオブジェクトは削除されてエッジキャッシュで使用できなくなることがあります。ディストリビューションは、削除されたオブジェクトを提供することはできません。
リダイレクト
オリジンサーバーでオブジェクトの場所を変更した場合、リクエストを新しい場所にリダイレクトするようにウェブサーバーを構成できます。リダイレクトが構成された後、ビューワーがオブジェクトのリクエストを最初に送信したときに、ディストリビューションはリクエストをオリジンに送信し、オリジンはリダイレクトで応答します (例: 302 Moved
Temporarily
)。ディストリビューションはリダイレクトをキャッシュし、ビューワーにリダイレクトを返します。ディストリビューションはリダイレクトに従いません。
リクエストを以下のどちらかの場所にリダイレクトするようにウェブサーバーを構成できます。
-
オリジンサーバーのオブジェクトの新しい URL。ビューワーが新しい URL へのリダイレクトに従う場合、ビューワーはディストリビューションをバイパスし、オリジンに直接アクセスします。つまり、オリジンにあるオブジェクトの新しい URL にリクエストをリダイレクトしないことをお勧めします。
-
オブジェクトの新しいディストリビューション URL。新しいディストリビューション URL を含むリクエストがビューワーから送信されると、ディストリビューションは、オリジンの新しい場所からオブジェクトを取得し、エッジロケーションにキャッシュした後、ビューワーにオブジェクトを返します。オブジェクトに対する以降のリクエストはエッジロケーションによって処理されます。これにより、オリジンのオブジェクトを要求するビューワーに関連するレイテンシーと負荷が回避されます。ただし、オブジェクトに対する新しいすべてのリクエストに、ディストリビューションへの 2 つのリクエストに対する料金がかかります。
転送エンコード
Lightsail ディストリビューションは、 Transfer-Encoding
ヘッダーchunked
の値のみをサポートします。オリジンが Transfer-Encoding:
chunked
を返した場合、ディストリビューションは、エッジロケーションで受け取ったオブジェクトをクライアントに返し、そのオブジェクトをチャンク形式でキャッシュして以降のリクエストに備えます。
ビューワーが Range GET
をリクエストし、オリジンは Transfer-Encoding: chunked
を返した場合、ディストリビューションはリクエストされた範囲ではなくオブジェクト全体をビューワーに返します。
レスポンスのコンテンツ長を事前に決定できない場合は、チャンクエンコーディングを使用することをお勧めします。詳細については、「中断された TCP 接続」を参照してください。