Gérez les comportements de demande et de réponse pour les distributions Lightsail - Amazon Lightsail

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Gérez les comportements de demande et de réponse pour les distributions Lightsail

Dans ce guide, nous décrivons le comportement de votre distribution Amazon Lightsail lors du traitement et du transfert des demandes vers votre point d'origine, ainsi que du traitement des réponses provenant de votre point d'origine. Pour plus d'informations sur les distributions, veuillez consulter Distributions de réseaux de diffusion de contenu.

Rubriques

Comment votre distribution traite et transfère des requêtes vers votre origine

Cette rubrique contient des informations sur la façon dont votre distribution traite les requêtes utilisateur et les transmet à votre origine.

Table des matières

Authentification

Pour les requêtes DELETE, GET, HEAD, PATCH, POST et PUT, si vous configurez votre distribution pour qu'elle transmette l'en-tête Authorization à votre origine, vous pouvez configurer votre serveur d'origine pour qu'il demande une authentification du client.

Pour les requêtes OPTIONS, vous pouvez configurer votre serveur d'origine pour qu'il demande une authentification du client uniquement si vous utilisez les paramètres de distribution suivants :

  • Configurez votre distribution pour transférer l'en-tête Authorization vers votre origine.

  • Configurer votre distribution de manière à ne pas mettre en cache les réponses aux requêtes OPTIONS.

Vous pouvez configurer votre distribution de sorte qu'elle transmette des requêtes à votre origine à l'aide des protocoles HTTP ou HTTPS.

Durée de mise en cache

Pour contrôler la durée pendant laquelle les objets restent dans le cache de votre distribution avant que celle-ci ne transmette une autre requête à votre origine, vous pouvez :

  • Configurer votre origine pour ajouter un Cache-Control ou un champ d’en-tête Expires à chaque objet.

  • Utiliser la valeur par défaut de 1 jour pour la durée de vie du cache (TTL).

Pour de plus amples informations, veuillez consulter les paramètres de distribution avancés.

Adresses IP client

Si un utilisateur envoie une requête à votre distribution et n'inclut pas un en-tête de requête X-Forwarded-For, votre distribution extrait l'adresse IP de l'utilisateur de la connexion TCP, ajoute un en-tête X-Forwarded-For qui inclut l'adresse IP et transmet la requête à l'origine. Par exemple, si votre distribution extrait l'adresse IP 192.0.2.2 de la connexion TCP, il transmet l'en-tête suivant à l'origine :

X-Forwarded-For: 192.0.2.2

Si un utilisateur envoie une requête à votre distribution et inclut un en-tête de requête X-Forwarded-For, votre distribution extrait l'adresse IP de l'utilisateur de la connexion TCP, l'ajoute à la fin de l'en-tête X-Forwarded-For et transmet la requête à l'origine. Par exemple, si la requête de l'utilisateur inclut X-Forwarded-For: 192.0.2.4,192.0.2.3 et que votre distribution extrait l'adresse IP 192.0.2.2 de la connexion TCP, il transmet l'en-tête suivant à l'origine :

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

Certaines applications, comme des équilibreurs de charge, des pare-feu d'application web, des proxys inverses, des systèmes de prévention d'intrusion et des passerelles API Gateway, ajoutent l'adresse IP au serveur périphérique de distribution qui a transmis la requête à la fin de l'en-tête X-Forwarded-For. Par exemple, si votre distribution inclut X-Forwarded-For: 192.0.2.2 dans une requête qu'il transmet à ELB et si l'adresse IP du serveur périphérique de distribution est 192.0.2.199, la requête reçue par votre instance contient l'en-tête suivant :

X-Forwarded-For: 192.0.2.2,192.0.2.199

Note

L’en-tête X-Forwarded-For contient les adresses IPv4 (par exemple, 192.0.2.44) et les adresses IPv6 (par exemple, 2001:0db8:85a3:0000:0000:8a2e:0370:7334).

Authentification SSL côté client

Les distributions Lightsail ne prennent pas en charge l'authentification client à l'aide de certificats SSL côté client. Si une origine demande un certificat côté client, votre distribution supprime la requête.

Compression

Les distributions Lightsail transmettent les demandes contenant les valeurs de champ Accept-Encoding et. "identity" "gzip"

Demandes conditionnelles

Lorsque votre distribution reçoit une requête d'objet ayant expiré d'un cache périphérique, il transmet la requête à votre origine pour obtenir la dernière version de l'objet ou avoir la confirmation de l'origine que le cache périphérique de votre distribution dispose déjà de la dernière version. Généralement, lorsque l'origine a envoyé l'objet à votre distribution la dernière fois, il a inclus une valeur ETag, une valeur LastModified, ou les deux, dans la réponse. Dans la nouvelle requête que votre distribution transfère à votre origine, votre distribution ajoute l'une des options suivantes ou les deux :

  • Un en-tête If-Match ou If-None-Match qui contient la valeur ETag pour la version expirée de l’objet.

  • Un en-tête If-Modified-Since qui contient la valeur LastModified pour la version expirée de l’objet.

L'origine utilise ces informations pour déterminer si l'objet a été mis à jour, et donc, s'il doit renvoyer l'objet entier à votre distribution ou uniquement un code de statut HTTP 304 (non modifié).

Cookies

Vous pouvez configurer votre distribution de manière à transmettre les cookies à votre origine. Pour de plus amples informations, veuillez consulter les paramètres de distribution avancés.

Partage des ressources cross-origin (CORS)

Si vous souhaitez que votre distribution respecte les paramètres de partage des ressources cross-origine, configurez votre origine de manière à ce qu'elle transmette l'en-tête Origin à votre origine.

Chiffrement

Vous pouvez exiger que les utilisateurs se connectent à votre distribution en utilisant HTTPS et que votre distribution transfère les requêtes à votre origine en utilisant HTTP ou HTTPS.

Votre distribution transmet les requêtes HTTPS à votre origine à l'aide des protocoles SSLv3, TLSv1.0, TLSv1.1 et TLSv1.2. Les autres versions de SSL et TLS ne sont pas prises en charge.

Demandes GET qui incluent un corps de texte

Si une requête utilisateur GET inclut un corps de texte, votre distribution renvoie un code de statut HTTP 403 (Interdit) à l'utilisateur.

Méthodes HTTP

Si vous configurez votre distribution pour qu'elle traite toutes les méthodes HTTP qu'il prend en charge, votre distribution accepte les requêtes utilisateur suivantes et les transmet à votre origine :

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

Votre distribution met toujours en cache les réponses aux requêtes GET et HEAD. Vous pouvez également configurer votre distribution pour mettre en cache les réponses aux requêtes OPTIONS. Votre distribution ne met pas en cache les réponses aux requêtes qui utilisent d'autres méthodes.

Pour plus d'informations sur la façon de configurer si votre origine traite ces méthodes, consultez la documentation de votre origine.

Important

Si vous configurez votre distribution pour qu'elle accepte et transmette à votre origine toutes les méthodes HTTP prises en charge par votre distribution, configurez votre serveur d'origine pour qu'il traite toutes les méthodes. Par exemple, si vous configurez votre distribution pour accepter et transmettre ces méthodes parce que vous voulez utiliser POST, vous devez configurer votre serveur d'origine de manière à gérer correctement les requêtes DELETE, afin que les utilisateurs ne puissent pas supprimer les ressources que vous ne les autorisez pas à supprimer. Pour plus d’informations, consultez la documentation de votre serveur HTTP.

En-têtes de requête HTTP et comportement de distribution

Le tableau suivant répertorie les en-têtes de requête HTTP que vous pouvez transmettre à votre origine (avec les exceptions qui sont notées). Pour chaque en-tête, la liste comprend des informations sur les points suivants :

  • Supported (Pris en charge) : si vous pouvez configurer votre distribution pour mettre en cache des objets selon des valeurs d'en-tête pour cet en-tête.

    Vous pouvez configurer votre distribution de sorte qu'il mette en cache des objets selon les valeurs des en-têtes Date et User-Agent, mais cela n'est pas recommandé. Ces en-têtes possèdent de nombreuses valeurs possibles, et la mise en cache selon leurs valeurs entraînerait la transmission par votre distribution de beaucoup plus de requêtes à votre origine.

  • Comportement si vous n'avez pas configuré : le comportement de votre distribution si vous ne configurez pas pour qu'il transmette l'en-tête à votre origine, ce qui entraîne la mise en cache par de vos objets en fonction des valeurs d'en-tête.

  • En-tête : en-têtes définis par un tiers

    Pris en charge : oui

    Comportement si non configuré : votre distribution transmet les en-têtes à votre origine.

  • En-tête : Accept

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Accept-Charset

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Accept-Encoding

    Pris en charge : oui

    Comportement si non configuré : votre distribution transmet Accept-Encoding: gzip à votre origine si la valeur contient gzip. Si la valeur ne contient pas gzip, votre distribution supprime le champ d'en-tête Accept-Encoding avant de transmettre la requête à votre origine.

  • En-tête : Accept-Language

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Authorization

    Pris en charge : oui

    Comportement si non configuré :

    • Requêtes GET et HEAD : votre distribution supprime le champ d'en-tête Authorization avant de transmettre la requête à votre origine.

    • Requêtes OPTIONS : votre distribution supprime le champ d'en-tête Authorization avant de transmettre la requête à votre origine si vous configurez votre distribution pour qu'elle mette en cache les réponses aux requêtes OPTIONS.

      Votre distribution transmet le champ d'en-tête Authorization à votre origine si vous ne configurez pas votre distribution pour qu'elle mette en cache les réponses aux requêtes OPTIONS.

    • Requêtes DELETE, PATCH, POST et PUT : votre distribution ne supprime pas le champ d'en-tête avant de transmettre la requête à votre origine.

  • En-tête : Cache-Control

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : CloudFront-Forwarded-Proto

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.

  • En-tête : CloudFront-Is-Desktop-Viewer

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.

  • En-tête : CloudFront-Is-Mobile-Viewer

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.

  • En-tête : CloudFront-Is-Tablet-Viewer

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.

  • En-tête : CloudFront-Viewer-Country

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution n'ajoute pas l'en-tête avant de transmettre la requête à votre origine.

  • En-tête : Connection

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution remplace cet en-tête par Connection: Keep-Alive avant de transmettre la requête à votre origine.

  • En-tête : Content-Length

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Content-MD5

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Content-Type

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Cookie

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : si vous configurez votre distribution pour transmettre des cookies, elle transmettra l'en-tête Cookie à votre origine. Sinon, votre distribution supprime le champ d'en-tête Cookie.

  • En-tête : Date

    Pris en charge : oui, mais non recommandé

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Expect

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : From

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Host

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution définit la valeur sur le nom de domaine de l'origine qui est associée à l'objet demandé.

  • En-tête : If-Match

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : If-Modified-Since

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : If-None-Match

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : If-Range

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : If-Unmodified-Since

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Max-Forwards

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Origin

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Pragma

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Proxy-Authenticate

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Proxy-Authorization

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Proxy-Connection

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Range

    Pris en charge : oui, par défaut

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Referer

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Request-Range

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution transmet l'en-tête à votre origine.

  • En-tête : TE

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Trailer

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : Transfer-Encoding

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Upgrade

    Pris en charge : non (sauf pour WebSocket les connexions)

    Comportement s'il n'est pas configuré : votre distribution supprime l'en-tête, sauf si vous avez établi une WebSocket connexion.

  • En-tête : User-Agent

    Pris en charge : oui, mais non recommandé

    Behavior if not configured (Comportement si non configuré) : votre distribution remplace la valeur du champ d'en-tête par Amazon CloudFront.

  • En-tête : Via

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : Warning

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : X-Amz-Cf-Id

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution ajoute l'en-tête à la requête de l'utilisateur avant de transmettre la requête à votre origine. La valeur d’en-tête contient une chaîne chiffrée qui identifie de façon unique la demande.

  • En-tête : X-Edge-*

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime tous les en-têtes X-Edge-*.

  • En-tête : X-Forwarded-For

    Pris en charge : oui

    Behavior if not configured (Comportement si non configuré) : votre distribution transfère l'en-tête vers l'origine.

  • En-tête : X-Forwarded-Proto

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

  • En-tête : X-Real-IP

    Pris en charge : non

    Behavior if not configured (Comportement si non configuré) : votre distribution supprime l'en-tête.

Version de HTTP

Votre distribution transmet les requêtes à votre origine à l'aide de HTTP/1.1.

Longueur maximale d’une demande et longueur maximale d’une URL

La longueur maximale d’une demande, avec le chemin, la chaîne de requête (le cas échéant) et les en-têtes inclus, est de 20480 octets.

Votre distribution crée une URL à partir de la requête. La longueur maximale de cette URL est de 8 192 caractères.

Si une requête ou une URL dépasse ces limites, votre distribution renvoie le code de statut HTTP 413 (Entité de requête trop volumineuse) à l'utilisateur, puis met fin à la connexion TCP avec ce dernier.

OCSP Stapling

Lorsqu'une visionneuse soumet une requête HTTPS pour un objet, votre distribution ou la visionneuse doit vérifier auprès de l'autorité de certification (CA) que le certificat SSL pour le domaine n'a pas été révoqué. OCSP Stapling accélère la validation du certificat en permettant à votre distribution de valider le certificat et de mettre en cache la réponse de l'autorité de certification. Le client n'a donc pas besoin de valider le certificat directement auprès de l'autorité de certification.

L'amélioration des performances d'OCSP Stapling est plus prononcée lorsque votre distribution reçoit de nombreuses requêtes HTTPS pour des objets dans le même domaine. Chaque serveur d'un emplacement périphérique d'une distribution doit soumettre une requête de validation distincte. Lorsque votre distribution reçoit de nombreuses requêtes HTTPS pour le même domaine, chaque serveur dans l'emplacement périphérique reçoit rapidement une réponse de l'autorité de certification qu'il peut « agrafer » (staple) dans un paquet de l'établissement de la liaison SSL ; lorsque l'utilisateur a vérifié que le certificat est valide, votre distribution peut servir l'objet demandé. Si votre distribution ne reçoit pas beaucoup de trafic dans un emplacement périphérique, il est plus probable que les nouvelles requêtes soient acheminées vers un serveur qui n'a pas encore validé le certificat auprès de l'autorité de certification. Dans ce cas, l'utilisateur exécute séparément l'étape de validation et le serveur de distribution sert l'objet. Ce serveur de distribution soumet également une requête de validation à l'autorité de certification. De ce fait, la fois suivante qu'il reçoit une requête incluant le même nom de domaine, il dispose d'une réponse de validation de l'autorité de certification.

Connexions persistantes

Lorsque votre distribution obtient une réponse de votre origine, il essaye de maintenir la connexion pendant plusieurs secondes au cas où une autre requête arrive au cours de cette période. Maintenir une connexion persistante permet de gagner le temps requis pour ré-établir la connexion TCP et établir une autre liaison TLS pour les demandes ultérieures.

Protocoles

Votre distribution transmet les requêtes HTTP ou HTTPS au serveur d'origine en fonction de la valeur du champ de politique du protocole Origin dans la console Lightsail. Dans la console Lightsail, les options sont HTTP uniquement et HTTPS uniquement.

Si vous spécifiez HTTP Only (HTTP uniquement) ou HTTPS Only (HTTPS uniquement), votre distribution transmet les requêtes à votre origine selon le protocole spécifié, quel que soit le protocole de la requête de l'utilisateur.

Important

Si votre distribution transmet une requête à l'origine via le protocole HTTPS et si le serveur d'origine renvoie un certificat non valide ou un certificat auto-signé, votre distribution annule la connexion TCP.

Chaînes de requête

Vous pouvez configurer si que votre distribution transmette les paramètres de chaîne de requête à votre origine.

Délai d’attente et tentatives de connexion à l’origine

Par défaut, votre distribution attend jusqu'à 30 secondes (3 tentatives de 10 secondes) avant de renvoyer une réponse d'erreur à l'utilisateur.

Délai de réponse de l’origine

Le délai de réponse de l’origine, également appelé délai d’attente des opérations de lecture depuis l’origine ou délai de demande à l’origine, s’applique aux deux valeurs suivantes :

  • Durée, en secondes, pendant laquelle votre distribution attend une réponse après avoir transféré une requête à l'origine.

  • Durée, en secondes, pendant laquelle votre distribution attend après avoir reçu un paquet d'une réponse provenant de l'origine et avant de recevoir le paquet suivant.

Le comportement de votre distribution dépend de la méthode HTTP utilisée dans la requête utilisateur :

  • Requêtes GET et HEAD : si l'origine ne répond pas ou cesse de répondre pendant la durée du délai de réponse, votre distribution annule la connexion. Si le nombre spécifié de tentatives de connexion d'origine est supérieur à 1, votre distribution essaie de nouveau d'obtenir une réponse complète. Votre distribution essaie jusqu'à 3 fois, comme déterminé par la valeur du paramètre de tentative de connexion d'origine. Si l'origine ne répond pas lors de la dernière tentative, votre distribution ne réessaie pas tant qu'il ne reçoit pas une autre requête de contenu sur la même origine.

  • Requêtes DELETE, OPTIONS, PATCH, PUT et POST : si l'origine ne répond pas dans les 30 secondes, votre distribution annule la connexion et ne réessaye pas de contacter l'origine. Le client peut soumettre à nouveau la demande si nécessaire.

Requêtes simultanées pour le même objet (pics de trafic)

Lorsque l'emplacement périphérique d'une distribution reçoit une requête d'objet et que l'objet ne se trouve actuellement pas dans le cache ou que l'objet a expiré, votre distribution envoie immédiatement la requête à votre origine. En cas de pic de trafic (si des demandes supplémentaires pour le même objet arrivent sur l'emplacement périphérique avant que votre origine réponde à la première requête), votre distribution s'interrompt brièvement avant de transmettre des requêtes supplémentaires pour l'objet à votre origine. Généralement, la réponse à la première requête arrive sur l'emplacement périphérique de la distribution avant la réponse à des requêtes ultérieures. Cette courte pause contribue à réduire toute charge inutile sur votre serveur d’origine. Si les requêtes supplémentaires ne sont pas identiques parce que, par exemple, vous avez configuré votre distribution pour effectuer la mise en cache en fonction d'en-têtes de requête ou de cookies, votre distribution transmet toutes les requêtes uniques à votre origine.

En-tête d'agent utilisateur

Si vous souhaitez que votre distribution mette en cache différentes versions de vos objets en fonction de l'appareil grâce auquel un utilisateur visualise votre contenu, nous vous recommandons de configurer votre distribution pour transmettre un ou plusieurs des en-têtes suivants à votre origine :

  • CloudFront-Is-Desktop-Viewer

  • CloudFront-Is-Mobile-Viewer

  • CloudFront-Is-SmartTV-Viewer

  • CloudFront-Is-Tablet-Viewer

En fonction de la valeur de l'en-tête User-Agent, votre distribution définit la valeur de ces en-têtes sur true ou false avant de réacheminer la requête vers votre origine. Si un appareil entre dans plusieurs catégories, plusieurs valeurs peuvent être true. Par exemple, pour certaines tablettes, votre distribution peut définir à la fois CloudFront-Is-Mobile-Viewer et CloudFront-Is-Tablet-Viewer sur true.

Vous pouvez configurer votre distribution de sorte qu'elle mette en cache des objets selon les valeurs de l'en-tête User-Agent, mais cela n'est pas recommandé. L'en-tête User-Agent possède de nombreuses valeurs possibles, et la mise en cache selon ces valeurs entraînerait la mise en cache par votre distribution de beaucoup plus de requêtes à votre origine.

Si vous ne configurez pas votre distribution pour qu'elle mette en cache des objets en fonction des valeurs de l'en-tête User-Agent, votre distribution ajoute un en-tête User-Agent avec les valeurs suivantes avant de transmettre une requête à votre origine :

User-Agent = Amazon CloudFront

Votre distribution ajoute cet en-tête, que la requête de l'utilisateur inclut un en-tête User-Agent ou non. Si la requête de l'utilisateur inclut un en-tête User-Agent, votre distribution le supprime.

Comment votre distribution traite les réponses provenant de votre origine

Cette section contient des informations sur la façon dont votre distribution traite les réponses provenant de votre origine.

Table des matières

Réponses 100-Continue

Votre origine ne peut pas envoyer plus d'une réponse 100-Continue à votre distribution. Après la première réponse 100-Continue, votre distribution attend une réponse HTTP 200 OK. Si votre origine envoie une autre réponse 100-Continue après la première, votre distribution renvoie une erreur.

Mise en cache

  • Assurez-vous que l'origine définit des valeurs valides et précises pour les champs d'en-tête Date et Last-Modified.

  • Si des demandes d'utilisateurs incluent les champs d'en-tête de demande If-Match ou If-None-Match, définissez le champ d'en-tête de réponse ETag. Si vous ne spécifiez pas une valeur ETag, votre distribution ignore les en-têtes If-Match ou If-None-Match suivants.

  • Votre distribution respecte normalement un en-tête Cache-Control: no-cache dans la réponse de l'origine. Pour une exception, veuillez consulter Requêtes simultanées pour le même objet (pics de trafic).

Requêtes annulées

Si un objet n'est pas dans le cache périphérique et si un utilisateur met fin à une session (fermeture d'un navigateur par exemple) après que votre distribution a extrait l'objet de l'origine mais avant qu'il puisse fournir l'objet demandé, votre distribution ne met pas en cache l'objet dans l'emplacement périphérique.

Négociation de contenu

Si votre origine renvoie Vary:* dans la réponse et si la valeur de Minimum TTL (Durée de vie minimale) pour le comportement de cache correspondant est 0, votre distribution met en cache l'objet mais transmet quand même à l'origine chaque requête d'objet suivante, afin de vérifier que le cache contient la dernière version de l'objet. Votre distribution n'inclut pas tous les en-têtes conditionnels, comme If-None-Match ou If-Modified-Since. Par conséquent, votre origine renvoie l'objet à votre distribution en réponse à chaque requête.

Si votre origine renvoie Vary:* la réponse, et si la valeur de Minimum TTL pour le comportement de cache correspondant est une autre valeur, CloudFront traite l'Varyen-tête comme décrit dans les en-têtes de réponse HTTP que votre distribution supprime ou remplace.

Cookies

Si vous activez les cookies pour un comportement de cache et si l'origine renvoie des cookies avec un objet, votre distribution met en cache l'objet et les cookies. Notez que cela réduit la capacité de mise en cache d'un objet.

Connexions TCP annulées

Si la connexion TCP entre votre distribution et votre origine est annulée alors que votre origine renvoie un objet à votre distribution, le comportement de votre distribution évoluera selon si votre origine incluait ou non un en-tête Content-Length dans la réponse :

  • En-tête Content-Length : votre distribution renvoie l'objet à l'utilisateur lorsqu'il obtient l'objet de votre origine. Cependant, si la valeur de l'en-tête Content-Length ne correspond pas à la taille de l'objet, votre distribution ne met pas l'objet en cache.

  • Transfer-Encoding: Chunked : votre distribution renvoie l'objet à l'utilisateur lorsqu'elle obtient l'objet de votre origine. Cependant, si la réponse fragmentée n'est pas complète, votre distribution ne met pas l'objet en cache.

  • En-tête No Content-Length : votre distribution renvoie l'objet à l'utilisateur et le met en cache, mais l'objet peut ne pas être complet. Sans en-tête Content-Length, votre distribution ne peut pas déterminer si la connexion TCP a été est annulée délibérément ou par erreur.

Nous vous recommandons de configurer votre serveur HTTP pour ajouter un en-tête Content-Length afin d'empêcher votre distribution de mettre en cache des objets partiels.

En-têtes de réponse HTTP que votre distribution supprime ou remplace

Votre distribution supprime ou met à jour les champs d'en-tête suivants avant de transmettre la réponse de votre origine à l'utilisateur :

  • Set-Cookie : si vous configurez votre distribution pour transmettre les cookies, celui-ci transmet le champ d'en-tête Set-Cookie aux clients.

  • Trailer

  • Transfer-Encoding : si votre origine renvoie ce champ d'en-tête, votre distribution définit la valeur sur chunked avant de renvoyer la réponse à l'utilisateur.

  • Upgrade

  • Vary – Notez ce qui suit :

    • Si vous configurez votre distribution pour transmettre des en-têtes spécifiques aux appareils à votre origine (CloudFront-Is-Desktop-Viewer, CloudFront-Is-Mobile-Viewer, CloudFront-Is-SmartTV-Viewer, CloudFront-Is-Tablet-Viewer) et que vous configurez votre origine pour renvoyer Vary:User-Agent à votre distribution, celle-ci renvoie Vary:User-Agent à l'utilisateur.

    • Si vous configurez votre origine pour inclure Accept-Encoding ou Cookie dans l'en-tête Vary, votre distribution inclut les valeurs dans la réponse à l'utilisateur.

    • Si vous configurez votre distribution pour transférer une liste d'en-têtes autorisés vers votre origine, et si vous configurez votre origine pour renvoyer les noms des en-têtes de votre distribution dans l'Varyen-tête (par exemple,Vary:Accept-Charset,Accept-Language), votre distribution renvoie l'Varyen-tête contenant ces valeurs au visualiseur.

    • Pour en savoir plus sur la façon dont votre distribution traite une valeur * dans l'en-tête Vary, consultez Négociation de contenu.

    • Si vous configurez votre origine pour inclure d'autres valeurs dans l'en-tête Vary, votre distribution supprime les valeurs avant de renvoyer la réponse à l'utilisateur.

  • Via : votre distribution définit la valeur suivante dans la réponse à l'utilisateur :

    Via: version_http chaîne_alphanumérique.cloudfront.net (CloudFront)

    Par exemple, si le client envoie une demande via HTTP/1.1, la valeur ressemble à ce qui suit :

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

Taille maximale du fichier

La taille maximale d'un corps de réponse renvoyé par votre distribution à l'utilisateur est de 20 Go. Cette taille inclut les réponses de transfert fragmentées qui ne spécifient pas la valeur d'en-tête Content-Length.

Origine non disponible

Si votre serveur d'origine n'est pas disponible et que votre distribution obtient une requête d'objet figurant dans le cache périphérique mais ayant expiré (par exemple, parce que la période spécifiée dans la directive Cache-Control max-age est écoulée), votre distribution sert la version expirée de l'objet ou sert une page d'erreur personnalisée.

Dans certains cas, un objet qui est rarement demandé est expulsé et n’est plus disponible dans le cache périphérique. Votre distribution ne peut pas diffuser un objet qui a été expulsé.

Redirections

Si vous changez l'emplacement d'un objet sur votre serveur d'origine, vous pouvez configurer votre serveur web afin de rediriger les requêtes vers le nouvel emplacement. Une fois que vous avez configuré la redirection, la première fois qu'un utilisateur soumet une requête pour un objet, votre distribution envoie la requête à l'origine et l'origine répond avec une redirection (par exemple, 302 Moved Temporarily). Votre distribution met en cache la redirection et la renvoie à l'utilisateur. Votre distribution ne suit pas la redirection.

Vous pouvez configurer votre serveur Web afin de rediriger les demandes vers l’un des emplacements suivants :

  • La nouvelle URL de l’objet sur le serveur d’origine. Lorsque l'utilisateur suit la redirection vers la nouvelle URL, il contourne votre distribution et accède directement à l'origine. Par conséquent, nous vous recommandons de ne pas rediriger des demandes vers la nouvelle URL de l’objet sur l’origine.

  • La nouvelle URL de distribution pour l'objet. Lorsque l'utilisateur soumet la requête qui contient la nouvelle URL de distribution, votre distribution extrait l'objet du nouvel emplacement sur votre origine, le met en cache sur l'emplacement périphérique et renvoie l'objet à l'utilisateur. Les demandes suivantes pour l’objet seront servies par l’emplacement périphérique. Ceci évite la latence et la charge associées aux utilisateurs qui demandent l’objet à l’origine. Cependant, chaque nouvelle requête pour l'objet occasionne des frais pour deux requêtes à votre distribution.

Encodage de transfert

Les distributions Lightsail ne prennent en charge que chunked la valeur de l'en-tête. Transfer-Encoding Si votre origine renvoie Transfer-Encoding: chunked, votre distribution renvoie l'objet au client lorsque l'objet est reçu sur l'emplacement périphérique et met l'objet en cache au format fragmenté pour les requêtes suivantes.

Si l'utilisateur fait une requête Range GET et que l'origine renvoie Transfer-Encoding: chunked, votre distribution renvoie l'objet entier à l'utilisateur au lieu de la plage demandée.

Nous vous recommandons d’utiliser un encodage fragmenté si la longueur du contenu de votre réponse ne peut pas être prédéterminé. Pour de plus amples informations, veuillez consulter Connexions TCP annulées.