L’origine configurée sur ma distribution Amazon CloudFront utilise un hébergement virtuel. Je souhaite configurer ma distribution afin qu’elle transmette l’en-tête d’hôte.
Brève description
Pour configurer votre distribution afin qu’elle transmette l’en-tête d’hôte vers l’origine, effectuez l’une des actions suivantes :
- Créez une politique de cache et une politique de demande d’origine.
- Modifiez les paramètres d’un comportement existant dans la distribution.
Si vous créez une politique personnalisée pour les origines de la passerelle Amazon API Gateway sans domaine personnalisé, ne transmettez pas l’en-tête d’hôte. Sinon, vous recevez une erreur "403 error".
Important : Pour les origines Amazon Simple Storage Service (Amazon S3), CloudFront ne prend pas en charge les caches basés sur l’en-tête d’hôte. Pour plus d’informations, consultez la section Sélection des en-têtes sur lesquels baser la mise en cache.
Résolution
Créer une politique de cache et une politique de demande d’origine
Procédez comme suit :
- Ouvrez la console CloudFront.
- Dans le volet de navigation, sélectionnez Politiques.
- Dans la section Politiques personnalisées, choisissez Créer une politique de cache.
- Sous Paramètres de clé de cache, pour En-têtes, sélectionnez Inclure les en-têtes suivants.
- Dans la liste déroulante Ajouter un en-tête, choisissez Hôte.
- Définissez tous les autres paramètres de la politique de cache en fonction de vos besoins.
- Sélectionnez Créer.
- Attachez la politique au comportement approprié de votre distribution CloudFront.
Modifiez les paramètres d’un comportement existant dans la distribution.
Procédez comme suit :
- Ouvrez la console CloudFront.
- Sélectionnez une distribution.
- Choisissez l’onglet Comportements, puis sélectionnez le chemin auquel transférer l’en-tête d’hôte.
- Sélectionnez Modifier.
- Vérifiez que la clé de cache et les demandes d'origine sont définies sur les anciens paramètres de cache.
Remarque : Si les anciens paramètres de cache ne sont pas sélectionnés, suivez les étapes de la section précédente pour créer une politique de cache.
- Sous Anciens paramètres de cache, pour En-têtes, sélectionnez Inclure les en-têtes suivants.
- Dans le menu Ajouter un en-tête, choisissez Hôte.
- Sélectionnez Enregistrer les modifications.
(Facultatif) Transférer l'en-tête sous un autre nom
Pour transférer la valeur de l'en-tête de l'hôte sous un nom d'en-tête personnalisé ou différent, utilisez une fonction CloudFront ou une fonction AWS Lambda@Edge.
Pour transférer l'en-tête sous un autre nom, procédez comme suit :
- Vérifiez l'en-tête de l'hôte entrant.
Remarque : Pour les fonctions CloudFront, consultez l'événement de demande de l’utilisateur. Pour Lambda@Edge, vérifiez l'événement de visualisation ou de demande d’origine.
- Pour stocker la valeur d'en-tête d'hôte d'une requête client dans l'en-tête, utilisez la commande function handler Lambda dans la requête de l’utilisateur.
Remarque : Par exemple, si l'en-tête d'hôte entrant est hôte, ajoutez un nouvel en-tête ayant la même valeur. Consultez l'exemple de code suivant :
function handler(event) { const request = event.request;
const headers = request.headers;
const host = request.headers.host.value;
headers['x-forwarded-host'] = { "value": host }
return request
}
Remarque : Cet exemple de fonction active un événement de requête d'utilisateur.
- Pour transférer l'en-tête personnalisé vers l'origine, configurez la politique de cache ou de demande d'hôte pour autoriser l'en-tête X-Forwarded-Host. Pour plus d'informations, consultez la section Comportement de demande et de réponse pour les origines personnalisées.
Informations connexes
Mettre du contenu en cache en fonction des en-têtes de requête
Contrôler la clé de cache à l'aide d'une politique