如何使用带有外部 CNAME 的源拉 CDN?

如何使用带有外部 CNAME 的源拉 CDN?

我在设置 CDN 时遇到了一个特别的问题。以下是我们的状况:

我们正在运行一个基于 ASP.NET 的 CMS(DotNetNuke),在 AWS EC2 实例上配置了两个不同的 Web 头,这些实例位于 AWS ELB 后面。我们通过这个 CMS 实例为大约 50 位客户提供服务,每个客户都有自己的网站。由于 ELB 不允许我们使用 A 记录,因此我们为 ELB 设置了一个 CNAME。反过来,每个客户(拥有并控制自己的 DNS 记录)都有指向我们放在 ELB 前面的 CNAME 的 CNAME。

例如:我们已将 cms.example.com CNAME 添加到 ELB。我们的客户则将 www.customer.com CNAME 添加到 cms.example.com。

到目前为止,我们已经尝试了几种不同的 CDN,但遇到了两个主要问题:

1)亚马逊Cloudfront。这是我们最接近工作的,但是,Cloudfront 替换了用户代理字符串,这导致 ASP.NET 用户控件中断(特别是与生成 __doPostback() javascript 方法有关)。

2) 想要控制 DNS 的服务。这些给我们带来了与 CNAME 相关的问题。我们能够将我们自己的 CNAME(cms.example.com)转移到他们的域,并且直接通过 cms.example.com 运行良好。但是,www.customer.com(cms.example.com 的 CNAME)却不行。

Origin-push 并不是一个真正的选择,因为我们的许多客户都很难弄清楚如何通过 CMS 管理他们的资产,更不用说 FTP 和弄清楚链接了。

最终的问题是,是否有任何方法可以让我们配置源拉 CDN,而无需控制客户的域名?

答案1

我会寻找一个解决方案,您的主机提供重写 //cms.example.com/$customer/f/q/fn 的内容

我有一个 cdn 主机名,它以这种方式为我的主机名提取内容。设置新客户或主机名时,需要进行少量配置才能允许这样做,但可以编写脚本。

当您尝试单独计费或限制每个客户的 CDN 使用量时,就会出现问题。

相关内容