‹ ハウツー に戻る

Amazon Lightsail ディストリビューションのリクエストとレスポンスの動作について

最終更新日: 2020 年 7 月 23 日

このガイドでは、リクエストを処理してオリジンに転送するときのAmazon Lightsailディストリビューションの動作と、オリジンからのレスポンスの処理について説明します。ディストリビューションの詳細については、「 のコンテンツ配信ネットワークディストリビューション」を参照してくださいAmazon Lightsail

トピック

ディストリビューションがリクエストを処理してオリジンに転送する方法

このセクションでは、 ディストリビューションがビューワーリクエストを処理してオリジンに転送する方法に関する情報を示します。

目次

Authentication

DELETE、、GETHEADPATCHPOST、および PUT リクエストの場合、 Authorization ヘッダーをオリジンに転送するようにディストリビューションを設定すると、クライアント認証をリクエストするようにオリジンサーバーを設定できます。

OPTIONS リクエストの場合、次のディストリビューション設定を使用する場合にのみ、クライアント認証を要求するようにオリジンサーバーを設定できます。

  • Authorization ヘッダーをオリジンに転送するようにディストリビューションを設定します。

  • OPTIONS リクエストへの応答をキャッシュしないようにディストリビューションを設定します。

HTTP または HTTPS を使用してリクエストをオリジンに転送するようにディストリビューションを設定できます。

キャッシュ期間

ディストリビューションが別のリクエストをオリジンに転送するまでにオブジェクトをディストリビューションのキャッシュに保持する期間を制御するには、次の操作を実行できます。

  • Cache-Control または Expires ヘッダーフィールドを各オブジェクトに追加するようにオリジンを構成します。

  • キャッシュ保持期間 (TTL) には、デフォルト値の 1 日を使用します。

詳細については、「 ディストリビューションの詳細設定」を参照してください。

クライアント IP アドレス

ビューワーがリクエストをディストリビューションに送信し、 X-Forwarded-For リクエストヘッダーを含めない場合、ディストリビューションはビューワーの IP アドレスを TCP 接続から取得し、IP アドレスを含む X-Forwarded-For ヘッダーを追加して、リクエストをオリジンに転送します。たとえば、ディストリビューションが TCP 接続192.0.2.2から IP アドレスを取得する場合、次のヘッダーをオリジンに転送します。

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 接続192.0.2.2から IP アドレスを取得する場合、オリジンに次のヘッダーを転送します。

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

ロードバランサー、ウェブアプリケーションファイアウォール、リバースプロキシ、侵入防御システム、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 証明書を使用したクライアント認証をサポートしていません。オリジンがクライアント側証明書をリクエストした場合、ディストリビューションはリクエストを削除します。

Compression

Lightsail ディストリビューションは、 Accept-Encoding フィールド値 "identity" および を持つリクエストを転送"gzip"します。

条件付きリクエスト

ディストリビューションは、エッジキャッシュで有効期限切れになっているオブジェクトに対するリクエストを受け取ると、リクエストをオリジンに転送し、オブジェクトの最新バージョンを取得するか、ディストリビューションエッジキャッシュに最新バージョンが既に存在することをオリジンに確認します。通常、オリジンはオブジェクトをディストリビューションに最後に送信するときに、 ETag 値、 LastModified 値、または両方の値をレスポンスに含めます。ディストリビューションがオリジンに転送する新しいリクエストでは、ディストリビューションは次のいずれかまたは両方を追加します。

  • オブジェクトの有効期限切れバージョンの If-Match 値が含まれる If-None-Match または ETag ヘッダー。

  • オブジェクトの有効期限切れバージョンの If-Modified-Since 値が含まれる LastModified ヘッダー。

オリジンはこの情報を使用して、オブジェクトが更新されたかどうかを判断します。つまり、オブジェクト全体をディストリビューションに返すか、または HTTP 304 ステータスコード (変更なし) のみを返すかを決定します。

Cookies

オリジンに Cookie を転送するようにディストリビューションを設定できます。詳細については、「 ディストリビューションの詳細設定」を参照してください。

Cross-Origin Resource Sharing (CORS)

ディストリビューションで Cross-Origin Resource Sharing 設定を尊重する場合は、 ヘッダーをオリジンに転送するようにOriginオリジンを設定します。

Encryption

ビューワーに 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 ヘッダーの値に基づいてオブジェクトをキャッシュするようにディストリビューションを設定できますが、これはお勧めできません。これらのヘッダーには可能な値が多数あり、その値に基づいてキャッシュすると、ディストリビューションがオリジンに転送するリクエストの数が大幅に増加します。

  • [Behavior if you configured (設定した場合の動作)] - ヘッダーをオリジンに転送するように設定していない場合のディストリビューションの動作。これにより、ディストリビューションはヘッダー値に基づいてオブジェクトをキャッシュします。

  • ヘッダー - その他の定義ヘッダー

    サポート対象 - はい

    [Behavior if configured (設定されていない場合の動作)] - ディストリビューションはヘッダーをオリジンに転送します。

  • ヘッダー - Accept

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Accept-Charset

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Accept-Encoding

    サポート対象 - はい

    Behavior if not configured (設定されていない場合の動作) - 値gzipに が含まれている場合Accept-Encoding: gzip、ディストリビューションはオリジンに転送されます。値に が含まれていない場合gzip、ディストリビューションはリクエストをオリジンに転送する前に Accept-Encoding ヘッダーフィールドを削除します。

  • ヘッダー - Accept-Language

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Authorization

    サポート対象 - はい

    設定されていない場合の動作:

    • GET および HEAD リクエスト – ディストリビューションは、リクエストをオリジンに転送する前に Authorization ヘッダーフィールドを削除します。

    • OPTIONS requests – リクエストへのレスポンスをキャッシュするようにディストリビューションを設定している場合、ディストリビューションはリクエストをオリジンに転送する前に Authorization ヘッダーフィールドを削除しますOPTIONS

      OPTIONS リクエストに対するレスポンスをキャッシュするようにディストリビューションを設定しない場合、ディストリビューションは Authorization ヘッダーフィールドをオリジンに転送します。

    • DELETEPATCHPOST、、、および PUT リクエスト – ディストリビューションは、リクエストをオリジンに転送する前に ヘッダーフィールドを削除しません。

  • ヘッダー - Cache-Control

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - CloudFront-Forwarded-Proto

    サポート対象 - はい

    Behavior if configured (未設定の動作) - リクエストをオリジンに転送する前に、ディストリビューションが ヘッダーを追加しません。

  • ヘッダー - CloudFront-Is-Desktop-Viewer

    サポート対象 - はい

    Behavior if configured (未設定の動作) - リクエストをオリジンに転送する前に、ディストリビューションが ヘッダーを追加しません。

  • ヘッダー - CloudFront-Is-Mobile-Viewer

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - リクエストをオリジンに転送する前に、ディストリビューションが ヘッダーを追加しません。

  • ヘッダー - CloudFront-Is-Tablet-Viewer

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - リクエストをオリジンに転送する前に、ディストリビューションが ヘッダーを追加しません。

  • ヘッダー - CloudFront-Viewer-Country

    サポート対象 - はい

    動作が設定されていない場合 - ディストリビューションはリクエストをオリジンに転送する前に ヘッダーを追加しません。

  • ヘッダー - Connection

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - リクエストをオリジンに転送Connection: Keep-Aliveする前に、ディストリビューションがこのヘッダーを に置き換えます。

  • ヘッダー - Content-Length

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Content-MD5

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Content-Type

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Cookie

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - Cookie を転送するようにディストリビューションを設定した場合、 Cookie ヘッダーフィールドがオリジンに転送されます。指定しない場合、ディストリビューションは Cookie ヘッダーフィールドを削除します。

  • ヘッダー - Date

    サポート対象 - はい、ただし推奨されません

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Expect

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - From

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Host

    サポート対象 - はい

    Behavior if not configured (未設定の動作) - ディストリビューションは、リクエストされたオブジェクトに関連付けられているオリジンのドメイン名に値を設定します。

  • ヘッダー - If-Match

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - If-Modified-Since

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - If-None-Match

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - If-Range

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - If-Unmodified-Since

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Max-Forwards

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Origin

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Pragma

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Proxy-Authenticate

    サポート - いいえ

    動作が設定されていない場合 - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Proxy-Authorization

    サポート - いいえ

    設定されていない場合の動作 - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Proxy-Connection

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Range

    サポート - はい (デフォルト)

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Referer

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Request-Range

    サポート - いいえ

    設定されていない場合の動作 - > ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - TE

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Trailer

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - Transfer-Encoding

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Upgrade

    サポート - いいえ ( WebSocket 接続を除く)

    Behavior if configured (未設定の場合の動作) - WebSocket 接続が確立されていない限り、ディストリビューションは ヘッダーを削除します。

  • ヘッダー - User-Agent

    サポート対象 - はい、ただし推奨されません

    [Behavior if configured (設定されていない場合の動作)] - ディストリビューションは、このヘッダーフィールドの値を に置き換えますAmazon CloudFront

  • ヘッダー - Via

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - Warning

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - X-Amz-Cf-Id

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは、リクエストをオリジンに転送する前に、ビューワーリクエストに ヘッダーを追加します。ヘッダー値には、リクエストを一意に識別する暗号化された文字列が含められます。

  • ヘッダー - X-Edge-*

    サポート - いいえ

    設定されていない場合の動作 - ディストリビューションはすべてのX-Edge-*ヘッダーを削除します。

  • ヘッダー - X-Forwarded-For

    サポート対象 - はい

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーをオリジンに転送します。

  • ヘッダー - X-Forwarded-Proto

    サポート - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

  • ヘッダー - X-Real-IP

    サポート対象 - いいえ

    Behavior if configured (設定されていない場合の動作) - ディストリビューションは ヘッダーを削除します。

HTTP バージョン

ディストリビューションは、HTTP/1.1 を使用してリクエストをオリジンに転送します。

リクエストの最大長と URL の最大長

パス、クエリ文字列 (ある場合)、ヘッダーを含め、リクエストの最大長は 20480 バイトです。

ディストリビューションは、リクエストから URL を作成します。この URL の最大長は 8192 文字です。

リクエストまたは URL がこれらの最大制限を超える場合、ディストリビューションは HTTP ステータスコード 413 (Request Entity Too Large) をビューワーに返してから、ビューワーへの TCP 接続を終了します。

OCSP Stapling (OCSP Stapling)

オブジェクトに対する HTTPS リクエストをビューワーが送信する際には、ドメインの SSL 証明書が失効していないことをディストリビューションまたはビューワーが認証機関 (CA) に確認する必要があります。OCSP Stapling を使用すると、ディストリビューションが証明書を検証して CA からのレスポンスをキャッシュできるため、クライアントが CA と直接証明書を検証する必要がなくなり、証明書の検証速度が向上します。

ディストリビューションが同じドメイン内のオブジェクトに対する多数の HTTPS リクエストを受信すると、OCSP Stapling のパフォーマンス向上がさらに顕著になります。ディストリビューションエッジロケーション内の各サーバーは、個別の検証リクエストを送信する必要があります。ディストリビューションが同じドメインに対する多数の HTTPS リクエストを受信すると、エッジロケーション内のすべてのサーバーはすぐに CA からのレスポンスを受信し、SSL ハンドシェイクのパケットに「ステープリング」できます。ビューワーが証明書が有効であると確認されると、ディストリビューションはリクエストされたオブジェクトを提供できます。ディストリビューションがエッジロケーションで十分なトラフィックを確保できない場合、新しいリクエストは、CA に対して証明書がまだ検証されていないサーバーに誘導される可能性が高くなります。この場合、ビューワーは検証ステップを個別に実行し、ディストリビューションサーバーはオブジェクトを提供します。そのディストリビューションサーバーも CA に検証リクエストを送信するため、同じドメイン名を含むリクエストを次に受信したときには、CA からの検証レスポンスがあります。

永続接続

ディストリビューションは、オリジンからレスポンスを取得すると、その期間中に別のリクエストが届くのに備え、数秒間接続を維持しようとします。持続的接続を維持すると、TCP 接続の再構築に必要な時間と後続のリクエストに対する別の TLS ハンドシェイクの実行に必要な時間を節約できます。

Protocols

ディストリビューションは、 コンソールの [Origin protocolLightsail policy] フィールドの値に基づいて、HTTP または HTTPS リクエストをオリジンサーバーに転送します。Lightsail コンソールでは、オプションは HTTP のみ、HTTPS のみです。

[HTTP Only] または [HTTPS Only] を指定した場合、ディストリビューションはビューワーリクエストのプロトコルに関係なく、指定されたプロトコルを使用してリクエストをオリジンに転送します。

重要

ディストリビューションが HTTPS プロトコルを使用してリクエストをオリジンに転送し、オリジンサーバーが無効な証明書または自己署名証明書を返した場合、ディストリビューションは TCP 接続を中断します。

クエリ文字列

ディストリビューションがクエリ文字列パラメータをオリジンに転送するかどうかを設定できます。

オリジン接続のタイムアウトと試行

デフォルトでは、ディストリビューションは 30 秒 (それぞれ 10 秒間の試行が 3 回) 待機してから、ビューワーにエラーレスポンスを返します。

オリジン応答タイムアウト

オリジン応答タイムアウト (オリジンの読み取りタイムアウトまたはオリジンリクエストタイムアウトとも呼ばれます) は、次の両方に適用されます。

  • ディストリビューションがリクエストをオリジンに転送してからレスポンスを受け取るまでの待機時間 (秒単位)。

  • ディストリビューションがオリジンからレスポンスのパケットを受け取ってから次のパケットを受け取るまでの待機時間 (秒単位)。

ディストリビューションの動作は、ビューワーリクエストの HTTP メソッドによって異なります。

  • GET および HEAD リクエスト 応答タイムアウトの期間内にオリジンが応答しない場合、または応答を停止–した場合、ディストリビューションは接続を中断します。指定されたオリジン接続試行回数が 1 回を超える場合、ディストリビューションは完全なレスポンスの取得を再試行します。ディストリビューションは、オリジン接続試行設定の値によって決定される最大 3 回試行します。最後の試行中にオリジンが応答しない場合、ディストリビューションは同じオリジンのコンテンツに対する別のリクエストを受け取るまで再試行しません。

  • DELETEOPTIONS、、、PATCHPUTPOST リクエスト オリジン–が 30 秒以内に応答しない場合、ディストリビューションは接続を中断し、オリジンへの接続を再試行しません。クライアントは、必要に応じてリクエストを再送信できます。

同じオブジェクトに対する同時リクエスト (トラフィックスパイク)

ディストリビューションエッジロケーションがオブジェクトのリクエストを受け取り、オブジェクトが現在キャッシュにないか、有効期限が切れている場合、ディストリビューションはすぐにオリジンにリクエストを送信します。トラフィック—スパイクがある同じオブジェクトへの追加のリクエストが、オリジンが最初のリクエスト—に応答する前にエッジロケーションに届く場合、ディストリビューションは短時間一時停止してから、オブジェクトへの追加のリクエストをオリジンに転送します。通常、最初のリクエストに対するレスポンスは、後続のリクエストに対するレスポンスの前に、ディストリビューションエッジロケーションに届きます。この短い停止により、オリジンサーバーでの不要な負荷が減ります。リクエストヘッダーや Cookie に基づいてキャッシュするようにディストリビューションを設定した場合など、追加のリクエストが同じでない場合、ディストリビューションはすべての一意のリクエストをオリジンに転送します。

User-agent ヘッダー

ユーザーがコンテンツの表示に使用しているデバイスに基づいて、ディストリビューションでオブジェクトの異なるバージョンをキャッシュする場合は、以下のヘッダーを 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 レスポンスを送信した場合、ディストリビューションはエラーを返します。

Caching

  • オリジンが Date および Last-Modified ヘッダーフィールドに有効で正確な値を設定していることを確認します。

  • ビューワーからのリクエストに If-Match または If-None-Match リクエストヘッダーフィールドが含まれる場合、ETag レスポンスヘッダーフィールドを設定します。ETag 値を指定しない場合、ディストリビューションは以降の If-Match または If-None-Match ヘッダーを無視します。

  • ディストリビューションは通常、オリジンからのレスポンスの Cache-Control: no-cache ヘッダーを優先します。例外については、「同じオブジェクトに対する同時リクエスト (トラフィックスパイク)」を参照してください。

キャンセルされたリクエスト

オブジェクトがエッジキャッシュになく、ディストリビューションがオリジンからオブジェクトを取得した後で、リクエストされたオブジェクトを配信する前にビューワーがセッションを終了した場合 (ブラウザを閉じるなど)、ディストリビューションはそのオブジェクトをエッジロケーションにキャッシュしません。

コンテンツネゴシエーション

オリジンがレスポンスVary:*で を返し、対応するキャッシュ動作の [Minimum TTL (最小 TTL)] の値が 0 の場合、ディストリビューションはオブジェクトをキャッシュしますが、オブジェクトの後続のすべてのリクエストをオリジンに転送して、キャッシュにオブジェクトの最新バージョンが含まれていることを確認します。ディストリビューションには、 If-None-Match や などの条件付きヘッダーは含まれませんIf-Modified-Since。 その結果、オリジンは、すべての リクエストに応答してディストリビューションにオブジェクトを返します。

オリジンがレスポンスVary:*で を返し、対応するキャッシュ動作の [Minimum TTL (最小 TTL)] の値が他の値である場合、 は、ディストリビューションが削除または置き換える CloudFront VaryHTTP レスポンスヘッダーで説明されているようにヘッダーを処理します。

Cookies

キャッシュ動作の 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-ViewerCloudFront-Is-SmartTV-Viewer) に転送するようにディストリビューションを設定しCloudFront-Is-Tablet-Viewer、ディストリビューションVary:User-Agentに返すようにオリジンを設定した場合、ディストリビューションは をVary:User-Agentビューワーに返します。

    • Accept-Encoding ヘッダーに Cookie または Vary のいずれかを含めるようにオリジンを設定した場合、ディストリビューションはビューワーへのレスポンスに値を含めます。

    • ヘッダーのホワイトリストをオリジンに転送するようにディストリビューションを設定し、 Vary ヘッダー ( などVary:Accept-Charset,Accept-Language) でディストリビューションにヘッダー名を返すようにオリジンを設定した場合、ディストリビューションはこれらの値を持つ Vary ヘッダーをビューワーに返します。

    • ディストリビューションが *Vary ヘッダーの 値を処理する方法については、「コンテンツネゴシエーション」を参照してください。

    • Vary ヘッダーに他の値を含めるようにオリジンを設定した場合、ディストリビューションは値を削除してから、ビューワーにレスポンスを返します。

  • Via – ディストリビューションは、ビューワーへのレスポンスで値を次のように設定します。

    Via: http-versionalphanumeric-string.cloudfront.net (CloudFront)

    たとえば、クライアントが HTTP/1.1 を介してリクエストを行った場合、値は次のようになります。

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

最大ファイルサイズ

ディストリビューションがビューワーに返すレスポンス本文の最大サイズは 20 GB です。これには、Content-Length ヘッダーの値を指定しないチャンク転送レスポンスが含まれます。

使用できないオリジン

オリジンサーバーが使用できず、ディストリビューションがエッジキャッシュにあるオブジェクトに対するリクエストを受信し、そのオブジェクトが期限切れになった場合 (たとえば、 Cache-Control max-age ディレクティブで指定された期間が経過している場合)、ディストリビューションはオブジェクトの期限切れバージョンを提供するか、カスタムエラーページを提供します。

場合によって、要求頻度の低いオブジェクトは削除されてエッジキャッシュで使用できなくなることがあります。ディストリビューションは、削除されたオブジェクトを提供することはできません。

Redirects

オリジンサーバーのオブジェクトの場所を変更した場合、リクエストを新しい場所にリダイレクトするようにウェブサーバーを設定できます。リダイレクトを設定した後、ビューワーがオブジェクトのリクエストを送信したときに初めて、ディストリビューションがリクエストをオリジンに送信し、オリジンがリダイレクトで応答します (例: 302 Moved Temporarily)。ディストリビューションはリダイレクトをキャッシュし、ビューワーにリダイレクトを返します。ディストリビューションはリダイレクトに従いません。

リクエストを以下のどちらかの場所にリダイレクトするようにウェブサーバーを構成できます。

  • オリジンサーバーのオブジェクトの新しい URL。ビューワーが新しい URL へのリダイレクトに従うと、ビューワーはディストリビューションをバイパスし、オリジンに直接アクセスします。つまり、オリジンにあるオブジェクトの新しい URL にリクエストをリダイレクトしないことをお勧めします。

  • オブジェクトの新しいディストリビューション URL。ビューワーが新しいディストリビューション URL を含むリクエストを送信すると、ディストリビューションはオリジンの新しい場所からオブジェクトを取得し、エッジロケーションにキャッシュして、ビューワーにオブジェクトを返します。オブジェクトに対する以降のリクエストはエッジロケーションによって処理されます。これにより、オリジンのオブジェクトを要求するビューワーに関連するレイテンシーと負荷が回避されます。ただし、オブジェクトに対する新しいリクエストごとに、ディストリビューションへの 2 つのリクエストに対して料金が発生します。

転送エンコード

Lightsail ディストリビューションは、 chunkedTransfer-Encoding ヘッダーの値のみをサポートします。オリジンが を返した場合Transfer-Encoding: chunked、 ディストリビューションは、エッジロケーションでオブジェクトが受信されるとオブジェクトをクライアントに返し、後続のリクエストのためにオブジェクトをチャンク形式でキャッシュします。

ビューワーが Range GET をリクエストし、オリジンが を返す場合Transfer-Encoding: chunked、ディストリビューションはリクエストされた範囲ではなくオブジェクト全体をビューワーに返します。

レスポンスのコンテンツ長を事前に決定できない場合は、チャンクエンコーディングを使用することをお勧めします。詳細については、「中断された TCP 接続」を参照してください。

追加情報

でのディストリビューションの管理に役立つ記事をいくつか紹介Lightsailします。