
TLDR: когда я создаю эту запись DNS:
whatever.mydomain.com. IN CNAME biglongjibberstring.r89.cf2.rackcdn.com.
Откуда Rackspace знает, что выбранное мной случайное имя хоста должно относиться к моему контейнеру/аккаунту Cloud Files, а не к другому клиенту?
Я только что протестировал простой пример использования Cloud Files с Rackspace. Я создал Cloud Files "Container" и включил опцию "Static Website". Я загрузил пример изображения и пример файла index.html. Эти файлы в этом контейнере теперь доступны по этому безумно длинному URL, который пользовательский интерфейс сообщает мне, что я могу использовать в качестве CNAME для своего домена:
И конечно же, добавив запись CNAME, например:
what.mydomain.com. В CNAME biglongjibberstring.r89.cf2.rackcdn.com.
Просматриваяhttp://whatever.mydomain.com/работает (проверил домашнюю страницу и изображение). Но как он может знать, что когда он видит запрос на "whatever.mydomain.com" (в заголовке HTTP Host), он предназначен для моего конкретного контейнера облачных файлов?
Кажется, это как-то связано с DNS, так как если я просто помещаю "blah.example.com" в свой файл hosts с IP-адресом, в который преобразуется biglongjibberstring.r89.cf2.rackcdn.com. - это не работает (выдает ошибку о недопустимом URL - похоже, что он исходит от Akamai). Единственный способ, которым я мог бы увидеть, чтобы это работало, - это если бы каким-то образом поиск DNS для any.mydomain.com каким-то образом передавал обратно на DNS-серверы Rackspace/Akamai эту связь между "whatever.mydomain.com" и "biglongjibberstring.r89.cf2.rackcdn.com.". Но я никогда не видел такого подхода и даже не думаю, что поиск DNS, который возвращается к Rackspace/Akamai, на самом деле содержит необходимую для этого информацию (хотя я могу ошибаться).
Кто-нибудь знает, что за черная магия здесь происходит?
решение1
Наблюдая за поведением, я могу предположить, что они могли бы делать следующее:
Когда 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 соответствующим образом и попробуйте.