AWS Cloud Front, como solicitar origem usando a URL correta

AWS Cloud Front, como solicitar origem usando a URL correta

Estou tentando armazenar em cache um site que está em um EC2, ele tem uma URL uncached.xyz.com, então criei um Cloud Front com a origem apontada uncached.xyz.come criei um registro xyz.comque aponta para a distribuição do cloudfront, chamado algo como d111111abcdef8.cloudfront.net,

Mas todas as informações retornadas pelo servidor (como URLs de botão) não são relativas e incluem a URL de solicitação, o que significa que se o Cloudfront acessar a origem com uncached.xyz.com, o conteúdo retornado pelo CDN (para qualquer cname usado) conterá a URL de origem em vez do url usado para acessar a distribuição do CloudFront, parecendo <a href="uncached.xyz.com/info"><a>onde deveria estar <a href="xyz.com/info"><a>.

tl: dr.

O CloudFront deve retornar:
<a href="xyz.com/info"><a> (que é a URL acessada que aponta para a distribuição CDN (o site em cache))
Mas retorna:
<a href="uncached.xyz.com/info"><a> (que é a URL de origem que contém os dados a serem armazenados em cache (o site))

Existe uma maneira de "falsificar" o servidor Origin fazendo-o pensar que o URL usado para acessá-lo é a distribuição do CloudFront em vez do URL de origem configurado?

Versão mais simples do que estou usando.

arquitetura exemplar

Responder1

Existem várias maneiras de fazer isso:

Defina os cabeçalhos X-Forwarded-Host e X-Forwarded-Proto na configuração do Cloudfront para solicitações de origem para passar as informações necessárias para o aplicativo de back-end. No backend utilize os Headers, se presentes, para gerar o conteúdo das páginas.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Host

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto

Outra abordagem poderia ser configurar um lambda@edge que processe a resposta de origem e substitua o conteúdo quando necessário.

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-updating-http-responses.html

informação relacionada