Настройка общих поддоменов (wildcard subdomains) в Apache

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

За последнюю неделю мне уже несколько раз приходилось рассказывать, как настраивать общие поддомены (известные как wildcard subdomains) в Apache и BIND/MaraDNS, поэтому решил написать статью, к которой можно будет отсылать интересующихся Общие поддомены используются в силу множества причин: создание многопользовательских инсталляций блогов/форумов, где каждый пользователь получает домен вида username.domain.tld (в качестве примера можно привести известный [...]

← Вернуться к полной версии записи «Настройка общих поддоменов (wildcard subdomains) в Apache»…

Автор: ; опубликовано в: Администрирование; метки: Apache, BIND, общий поддомен
20
Апр
2008

RSS Комментарии к статье «Настройка общих поддоменов (wildcard subdomains) в Apache» (38)  »

  1. Станислав

    Привет, спасибо за статью :) Весьма полезно.

    Есть вопрос по теме: Нужно сделдать для пользователя возможность прикрепить свой домен. Какими средствами этого можно достичь?

    • Станислав, всё зависит от используемого софта.

      Например, если web-приложение поддерживает общие поддомены (как, например, WordPress), то нужно только сконфигурировать DNS и web-сервер: в DNS добавить запись общего поддомена (* IN A ip.ad.dr.es), web-серверу задать псевдоним виртуального хоста (для Apache — ServerAlias *.mysite.com, для nginx — server .mysite.com).

      Если же нет, то нужно смотреть, что вообще можно сделать.

  2. А скажи плз – куда именно добавлять А-запись? В какой файл настроек БИНДа?

    • В файл зоны.

      *.sitename.com IN A ip.ad.re.ss

      • >В файл зоны.
        Сорри, но как бэ именно это и спрашиваю :)
        В каталоге /etc/bind находится 13 файлов.
        В какой из них? Как определить?

        Вот у меня задача для того же вордпресса на локалхосте под линухом (точнее на виртуалхосте). Т.е. для 127,0,0,1.
        Куда я должен прописать А-запись?

        • В каталоге /etc/bind находится 13 файлов.
          В какой из них? Как определить?

          Допустим, сайт называется example.com.
          В этом случае Вам нужно найти строку zone "example.com" в Ваших файлах. В том, в котором она будет найдена, будет содержать код наподобие такого:

          [-]
          View Code Text
          zone "example.com" {
              type master;
              file "/path/to/zone/file";
          };

          /path/to/zone/file и будет требуемым файлом.

          Вот у меня задача для того же вордпресса на локалхосте под линухом (точнее на виртуалхосте). Т.е. для 127,0,0,1.
          Куда я должен прописать А-запись?

          Если все локально, то можно в /etc/hosts — только каждый сайт придётся прописывать отдельно.

          Например,

          [-]
          View Code Text
          127.0.0.1 example.com test.example.com subdomain.example.com
      • Serg

        Vladimir, благодарю за попытку помочь, но видимо мы друг-друга не понимаем :)
        У меня есть настроенные и рабочие виртуалхотсты. (sitelocal1.loc, sitelocal1.loc и тд..).
        Все они прописаны в хостс (Чтобы понятней было – делалось по этой методе: forum.ubuntu.ru/index.php?topic=52552.0 См там спойлер: “Как настроить виртуальные хосты?”).

        Теперь на одном из этих виртулхостов нужно поднять вилкард (записи в хостс – не вариант в данном случае). Для этого собсно и пришлось установить БИНД.
        В его конфигах НЕТ ни одного вируталхоста (что, думаю, естественно).
        Вот я и никак не пойму, куда нужно добавить А-запись.
        В конфиг апача сервералиас вписал и он работает (отвечает, если в хостс ручную прописать сабдомен). Осталось (как я понимаю) настроить БИНД.

        Благодарю за помощь.

        • В /etc/bind/named.conf.local дописываете такое (предполагаю, что у Вас Ubuntu):

          [-]
          View Code Text
          zone "sitelocal1.loc" {
              type master;
              file "/etc/bind/zone-sitelocal1.loc";
          };

          Создаёте /etc/bind/zone-sitelocal1.loc:

          [-]
          View Code Text
          $ORIGIN .
          $TTL 600
          sitelocal1.loc IN SOA localhost.localdomain. root.localhost.localdomain. (20110809094700 600 300 54432000 600)
                         IN NS localhost.localdomain.
                         IN A 127.0.0.1
          *.sitelocal1.loc IN A 127.0.0.1

          Перезапускаете bind, смотрите в логах, что всё в порядке.

          Проверить можно так:

          [-]
          View Code Bash
          dig sitelocal1.loc @127.0.0.1
          dig something.sitelocal1.loc @127.0.0.1

          Затем первой строкой в /etc/resolv.conf дописываете

          [-]
          View Code Text
          nameserver 127.0.0.1

          Если у Вас IP-адреса провайдером раздаются по DHCP, то нужно сказать клиенту, что нужно прописывать новый nameserver в /etc/resolv.conf. У меня это делается так:

          /etc/dhcp/dhclient.conf:

          [-]
          View Code Text
          prepend domain-name-servers 127.0.0.1;

          Как-то так.

      • Serg

        Владимир, огромное спасибо.
        Всё получилось, только БИНД ругался на данные тобой цифры в /etc/bind/zone-sitelocal1.loc.

        Изменив их на значения из /etc/bind/db.local – всё сразу стало ОК.

        Ещё раз благодарю за помощь.

  3. Nadia

    Владимир, добрый день.
    Спасибо за статью. У меня остается открытым только вопрос, как правильно настроить www для субдоменов. Т.е. задача такая:
    основной домен domain.com, http://www.domain.com (все прописано, как вы и описываете, работает)
    субдомен sub.domain.com (прописана A запись вида * A IP – работает), http://www.sub.domain.com – не работает, нет такого домена, почему не работает, в общем, понятно, как заставить – не понятно :)
    Подскажите, как правильно настроить. Заранее благодарна.

  4. Максим

    Владимир,доброе время суток, такой вопрос, может вы знаете.
    Есть сайт test.pro, именно pro. На nic.ru в настройках днс указано *.test.pro.
    Все работает, все отлично. Мы пользуемся адресом aaa.test.pro . Однако, время от время у разных пользователей в разных регионах, в разное время aaa.test.pro перестает открываться. Проверка показала, что домен не пингуется (пишет что такой узел не найден), в тоже время работают любые адреса, которыми никто не пользуется:
    bbb.test.pro, neponeanto_cto_eto.test.pro, www.aaa.test.pro . Причем домен начинает работать примерно минут через 20-30. В чем может быть дело?

  5. Максим

    вчера написал вопрос про домен pro , мой вопрос просто взяли и удалили. почему?

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Настройка общих поддоменов (wildcard subdomains) в Apache»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा