FAQ: Голый домен
Один из самых часто задаваемых вопросов в рассылках это "Как мне настроить хостинг моего сайта на GAE без www (или голом домене/naked domain)".
Постараюсь полностью ответить на этот вопрос для того чтобы было понимание почему это невозможно.
DNS
Для начала придется немного разобраться как работает система доменных имен в интернете.
Когда мы набираем адрес страницы в браузере у нас происходит несколько событий. На первом этапе адрес разбивается на составляющие из которого выделяется доменное имя. И с помощью системной утилиты "ресолвится" в IP адрес, к которому уже потом идет запрос.
DNS это по сути децентрализованная база данных расположенная на множестве серверов. Для сайта с именем seoautomator.mediavirus.ru
происходит процедура взаимодействия с DNS серверами. Прежде чем обратиться к самому серверу. Адрес разбивается на составные части, для удобства запишем их в обратном порядке . ru mediavirus seoautomator
,
.
— точка, это нулевой уровень, DNS клиент обращается к корневому домену который состоит из . (точка), и запрашивает у него список DNS серверов которые отвечают за зону первого уровня.ru
— это домен первого уровня за него отвечает регистратор этого домена, когда клиент обращается к нему, то производится поиск в базе данных и выдается список NS серверов. Это те сервера которые мы указывали при регистрации.- NS сервера домена
mediavirus
уже наши и на запрос о том где seoautomator отвечают... пока для простоты скажем что отдает IP адрес.
Для полноты понимания мира можно прочитать статью о рекурсивном DNS запросе.
Датацентры
Что нам известно о Google с точки зрения их физического расположения? Несколько вещей:
- У Google много датацентров
- Они расположены в разных частях света
- Часто нам отвечает тот который ближе или тот который работает
- Вероятно Google сами бы хотели решать какой датацентр будет обслуживать какой сервис, в том числе и GAE
Теперь перейдем к тому как устроен GAE-хостинг. Никто не рассказывает как он работает внутри, но кое-что известно. Во-первых мы знаем, о том, что это облачный сервис, во-вторых о том, что на самом деле физически сайт находится более чем на одной машине, и что многие сервисы обслуживаются через свои собственные каналы. Поэтому часто следующий запрос приходит не на ту же самую машину, правда в тот же датацентр.
Домашнее задание: попробуйте попинговать google.com и www.google.com и сравните разницу времени ответа. Задание со звездочкой посмотреть марштут traceroute.
Добавление своего домена
Когда мы добавляем свой домен, то не можем добавить прямой IP адрес к конкретному серверу, как это происходит у многих других хостингов. Для случаев когда часть ветки DNS базы надо делегировать какому-то другому DNS серверу существует специальный тип записи CNAME. Поэтому мы добавляем следующую запись:
seoautomator.mediavirus.ru. CNAME ghs.google.com.
И вот тут начинается то ради чего был весь этот пост. Почему мы не можем добавить запись CNAME для голого домена?
А теперь то чего вы меньше всего ожидали — глупого ответа без объяснения причин. По стандарту (RFC 1912, пункт 2.4, или более простым языком) запись CNAME для указанного хоста должена (MUST) быть единственной.
Впрочем объяснение есть и очень простое, это просто правило безопасности, можно сравнить CNAME с символической ссылкой в файловой системе. Было бы странно если бы ссылка имела свое собственное представление о владельце файла или его размере, точно так же и тут. Перенаправляем клиента к другому серверу полностью.
Что делать с голыми доменами
Хотя одна из самых популярных заявок #777 посвящена как раз именно этой проблеме думаю не стоит ждать решения, а придумать его самостоятельно.
Наиболее быстрый, но далеко не самый чистый способ это использовать редиректы Tumblr'а предложенные Urban Monkey.
Для коммерческих проектов конечно же лучше всего купить хостинг за несколько долларов в год и не зависеть от проблем проекта который любезно согласился приютить вас.
blog comments powered by Disqus
Support
If you like my posts, please support me on Gittip