Назад | Перейти на главную страницу

Как «Cloud Files» из Rackspace узнает о моей записи CNAME?

TL; DR: когда я делаю эту запись DNS:

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

Как Rackspace узнает, что выбранное мной случайное имя хоста должно перейти в мой контейнер / учетную запись Cloud Files, а не другому клиенту?


Я только что протестировал простой пример использования Cloud Files с Rackspace. Я создал «Контейнер» облачных файлов и включил параметр «Статический веб-сайт». Я загрузил пример изображения и файл index.html. Эти файлы в этом контейнере теперь доступны по этому безумно длинному URL-адресу, который пользовательский интерфейс сообщает мне, что я могу использовать его в качестве CNAME для своего домена:

И, конечно же, добавление записи CNAME, например:

what.mydomain.com. В CNAME biglongjibberstring.r89.cf2.rackcdn.com.

Сидя в http://whatever.mydomain.com/ работает (протестировал домашнюю страницу и изображение). Но как он мог знать, что когда он видит запрос на «something.mydomain.com» (в заголовке HTTP Host), что он предназначен для моего конкретного контейнера облачных файлов?

Похоже, это как-то связано с DNS, так как если бы я просто поместил «blah.example.com» в свой файл hosts с IP-адресом, это biglongjibberstring.r89.cf2.rackcdn.com. разрешается - это не работает (выдает ошибку о недопустимом URL-адресе - похоже, исходит от Akamai). Единственный способ, которым я мог бы увидеть, что это работает, - это если каким-то образом поиск DNS для something.mydomain.com каким-то образом передавал обратно на DNS-серверы Rackspace / Akamai эту связь между «something.mydomain.com» и «biglongjibberstring.r89.cf2.rackcdn» .com. ". Но я никогда не видел такого подхода и даже не думаю, что поиск DNS, который восходит к Rackspace / Akamai, действительно содержит информацию, необходимую для этого (хотя я могу ошибаться в этом).

Кто-нибудь знает, что за черная магия здесь творится?

После наблюдения за поведением я могу предположить, что они могли бы разумно делать так:

Когда HTTP-запрос приходит на один из узлов CDN, и запрос имеет неизвестный Host заголовок они сами ищут имя в Host заголовок.

Если это имя окажется CNAME ссылаясь на известное имя (в форме <identifyinginformation>.rackcdn.com.) они связывают имя с Host заголовок с соответствующим ресурсом, иначе они вернут ошибку.


Это умозрительно, но я думаю, что именно это соответствует тому, что технически жизнеспособно, а также наблюдаемому поведению. В документация в Rackspace не уточняет, как это на самом деле работает, но, надеюсь, их поддержка может помочь.

Если кто-то хочет поэкспериментировать самостоятельно, сотрудник Rackspace упоминает URL http://124f4d373d9886355285-0dddf6f52a326dca397d3ae1202a22fd.r49.cf2.rackcdn.com/1_logs_dir.png в качестве примера в комментариях на странице документации, указанной выше. Просто добавьте CNAME к части хоста этого URL-адреса, измените URL-адрес соответствующим образом и попробуйте.