
Estoy intentando almacenar en caché un sitio web que está en un EC2, tiene una URL uncached.xyz.com
, así que creé un Cloud Front con el origen apuntado uncached.xyz.com
y creé un registro xyz.com
que apunta a la distribución de Cloudfront, llamado algo así como d111111abcdef8.cloudfront.net
,
Pero toda la información devuelta por el servidor (como las URL de los botones) no es relativa e incluye la URL de solicitud, lo que significa que si Cloudfront accede al origen con uncached.xyz.com
, el contenido devuelto por la CDN (para cualquier cname utilizado) contendrá la URL del origen en lugar de la URL utilizada para acceder a la distribución de CloudFront, que parece un <a href="uncached.xyz.com/info"><a>
lugar donde debería estar <a href="xyz.com/info"><a>
.
tl: dr.
CloudFront debería devolver:
<a href="xyz.com/info"><a>
(que es la URL a la que se accede y que apunta a la distribución CDN (el sitio web almacenado en caché))
Pero devuelve:
<a href="uncached.xyz.com/info"><a>
(que es la URL de origen que contiene los datos que se almacenarán en caché (el sitio web))
¿Hay alguna manera de "falsificar" el servidor de Origin haciéndole creer que la URL que se utiliza para acceder a él es la distribución de CloudFront en lugar de la URL de origen configurada?
Versión más simple de lo que estoy usando.
Respuesta1
Hay varias maneras de hacer eso:
Configure los encabezados X-Forwarded-Host y X-Forwarded-Proto dentro de la configuración de Cloudfront para que las solicitudes de origen pasen la información requerida a la aplicación backend. En el backend, utilice los encabezados, si están presentes, para generar el contenido dentro de las 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
Otro enfoque podría ser configurar un lambda@edge que procese la respuesta de origen y reemplace el contenido cuando sea necesario.