Ars Longa, Vita Brevis

Настройка общих поддоменов за 5 минут

За последнюю неделю мне уже несколько раз приходилось рассказывать, как настраивать общие поддомены (известные как wildcard subdomains) в Apache и BIND/MaraDNS, поэтому решил написать статью, к которой можно будет отсылать интересующихся :-)

Общие поддомены используются в силу множества причин: создание многопользовательских инсталляций блогов/форумов, где каждый пользователь получает домен вида username.domain.tld (в качестве примера можно привести известный WordPress µ), использование одной CMS для управления всеми поддоменами и т.п.

Для серверов на базе Apache процесс настройки общих поддоменов проходит в два этапа.

  1. Создание wildcard-записи DNS

    Первый шаг состоит в создании wildcard-записи DNS. Для разных DNS-серверов это будет осуществляться по-разному (в смысле, принцип один и тот же, различия лишь в синтаксисе конфигурационного файла). Рассмотрим на примере BIND (так как BIND работает и под Linux/UNIX, и под Windows).

    Создание wildcard-записи очень просто: всё, что нужно — это добавить A-запись, связывающую имя вида *.domain.tld с IP-aдресом сервера.

    Рассмотрим на примере одного development-сервера:

    $TTL        86400
    $ORIGIN internetnetworkmarketer.org.ua.
    @  1D  IN         SOA ns1.internetnetworkmarketer.org.ua.        sjinks.internetnetworkmarketer.org.ua. (
                                  2008030500 ; serial
                                  24H ; refresh
                                  15 ; retry
                                  90w ; expire
                                  15 ; minimum
                                 )
                            IN  NS     ns1
                            IN  NS     ns.secondary.net.ua.
                            IN  NS     ns2.trifle.net.
                            IN  MX  10 @
                            IN  A      195.10.218.132
                            IN  TXT    "v=spf1 a mx:internetnetworkmarketer.org.ua -all"
                            IN  SPF    "v=spf1 a mx:internetnetworkmarketer.org.ua -all"
    ns1                     IN  A      195.10.218.132
    www                     IN  A      195.10.218.132
    

    Мы видим, что домен internetnetworkmarketer.org.ua "живёт" по адресу 195.10.218.132; там же находятся два его поддомена — ns1.internetnetworkmarketer.org.ua и www.internetnetworkmarketer.org.ua (технически www.somesite.tld является поддоменом somesite.tld; в общем случае www.somesite.tld и somesite.tld могут быть совершенно разными сайтами).

    На сайт был поставлен WordPress µ, вследствие чего нужно было создать общий поддомен — чтобы каждый пользователь получал блог вида username.internetnetworkmarketer.org.ua.

    Добавление общего поддомена сводится к добавлению A-записи в конец файла зоны:

    *.internetnetworkmarketer.org.ua.	IN  A      195.10.218.132
    

    После чего нужно было перезапустить <a href="http://blog.sjinks.org.ua/tag/bind/" class="st_tag internal_tag" rel="tag nofollow" tit