Rackspace的“Cloud Files”如何知道我的CNAMElogging?

TLDR:当我做这个DNSlogging时:

whatever.mydomain.com. IN CNAME biglongjibberstring.r89.cf2.rackcdn.com. 

Rackspace如何知道我select的这个随机主机名应该转到我的Cloud Files容器/帐户而不是另一个客户?


我刚刚testing了一个使用Rackspace的Cloud文件的简单例子。 我做了一个云文件“容器”,并启用了“静态网站”选项。 我上传了一个示例图像和一个示例index.html文件。 这个容器中的这些文件现在可以在这个疯狂的URL中使用,UI告诉我可以将它用作我的域的CNAME:

云文件容器设置

当然,添加一个CNAMElogging如下:

whatever.mydomain.com。 IN CNAME biglongjibberstring.r89.cf2.rackcdn.com。

浏览http://whatever.mydomain.com/作品(testing主页和图像)。 但是它怎么可能知道,当它看到一个“whatever.mydomain.com”的请求(在HTTP主机头),它是为我的特定的云文件容器?

这似乎与DNS有关,因为如果我只是把“blah.example.com”放在我的主机文件中,IP地址是biglongjibberstring.r89.cf2.rackcdn.com。 解决了 – 这不起作用(给出了一个关于无效的URL的错误 – 似乎来自Akamai)。 唯一的办法,我可能会看到这个工作是如果以某种方式DNS查找whatever.mydomain.com是以某种方式传回Rackspace / Akamai DNS服务器之间的这种关系“whatever.mydomain.com”和“biglongjibberstring.r89.cf2.rackcdn .COM“。 但是我从来没有见过这种方法,我甚至不认为返回到Rackspace / Akamai的DNS查询实际上包含了必要的信息(虽然我可能是错的)。

有谁知道这里发生了什么样的黑魔法?

在观察这些行为之后,我最好猜测他们可以合理地做的是:

当一个HTTP请求到达其中一个CDN节点,并且请求有一个未知的Host头时,他们自己在Host头中查找这个名字。

如果这个名字变成一个引用已知名称的CNAME (在<identifyinginformation>.rackcdn.com.的表单中),它们将Host头部的名字与适当的资源相关联,否则它们会返回一个错误。

这是推测性的,但我能想到的是,这符合技术上可行的以及观察到的行为。 Rackspace的文档没有具体说明它是如何工作的,但是希望他们的支持能帮上忙。

如果有人想单独进行实验,Rackspace员工在上面链接的文档页面的注释中以http://124f4d373d9886355285-0dddf6f52a326dca397d3ae1202a22fd.r49.cf2.rackcdn.com/1_logs_dir.png作为示例&#x3002; 只需将CNAME添加到该URL的主机部分,相应地修改该URL并尝试一下。