具有自定义来源和相同域的 Cloudfront

Cloudfront with custom origin and identical domain

假设一个域为 www.example.com 的网站托管在网站托管商的 LAMP 服务器上,该网站托管商不是亚马逊。该域由 Route53 管理。

是否有可能以某种方式保留 LAMP 网络服务器上的所有设置并仍然使用 www.example.com 作为 Cloudfront 的域?喜欢:

Client -> www.example.com -> Cloudfront Edge Server -> Custom origin available over www.example.com on LAMP webserver of third party webhoster

基本上,我想对 Cloudfront 边缘服务器和 LAMP 服务器使用 www.example.com。

此致

您不能在 CloudFront 上执行类似 /etc/hosts 的任何操作——它始终使用 public DNS 来解析来源。

但是,您仍然可以做您想做的事 -- 但您只需要了解为什么这个解决方案确实是您想要的,因为它看起来像不是(正如您在评论中指出的那样)。

在 Route 53 中,为源服务器的新主机名创建一个新的 A 记录,例如 origin.example.com。 您根本没有在源服务器上的任何地方配置此值。您的源服务器仍然认为它是 www.example.com。

在 Route 53 中,创建别名 A 记录 www.example.com 指向 origin.example.com。

此时,您的网站完全按照您的期望和要求运行。主机名 "origin.example.com" 在解析路径中,但此信息不可见且来源未知。

在 CloudFront 中,创建分配,将原始域名设置为 origin.example.com,将分配的备用域名设置为 www.example.com。

在每个缓存行为的设置中,确保 Host header 被列入白名单以转发到源。

将 www.example.com 的 Route 53 别名更改为指向您的 CloudFront 分配。

当请求到达 CloudFront 时,请求会保留 Host: www.example.com header。 CloudFront 使用 DNS 查找 origin.example.com 的 IP 地址,但是 ,它仅使用此信息来建立与源的连接。传入请求仍发送至 www.example.com。如果源具有 www.example.com 的 SSL 证书,CloudFront 会将其视为有效证书,因为您将 Host header 配置为白名单,并且它与证书匹配。

在此配置中,使用浏览器地址栏中分配的 dzczcexample.cloudfront.net 主机名访问 CloudFront 分配将不起作用,因为 CloudFront 会将 that 主机名发送到源,但是一旦您将 www.example.com 的 Route 53 别名指向分配的 cloudfront.net 域名,请求将被正确处理。