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

Создание записей псевдонимов для поддоменов

У меня есть домен www.mysite.com. Вот что я в конечном итоге хочу с этим сделать:

  1. На сайте www.mysite.com будет маркетинговый веб-сайт для моего веб-сайта / продукта (я назову его «программное обеспечение») и регистрационная форма. При регистрации клиент указывает, какой поддомен он хочет использовать, поэтому, скажем, что его компания - компания XYZ, он выбрал бы поддомен «xyz».

  2. Каким-то образом URL-адрес xyz.mysite.com может запустить код моего программного обеспечения.

  3. Моя программа будет проверять имя домена для каждого запроса и извлекать значение поддомена, то есть «xyz». Он использует это для установки строки подключения, то есть для использования базы данных «xyz», чтобы клиент получил доступ к своим данным.

По сути, это все. Однако пара вещей:

  1. Я хочу иметь только 1 копию кода. Все поддомены должны эффективно «переписать» запрос на эту центральную копию кода, так как код будет идентичным для клиентов / поддоменов.

  2. В идеале, хотя это и не важно, я надеялся, что смогу «подстановить» запись A (или запись CNAME, или что-то еще), так что мне не нужно будет вносить какие-либо дополнительные изменения в DNS всякий раз, когда клиент регистрируется, т.е. КАЖДЫЙ & ЛЮБОЕ значение в поддомене будет перезаписано в единую папку кода. Я бы проверял, когда клиент запрашивает страницу входа в систему, если этот поддомен был зарегистрирован, и возвращал 404, если нет.

Как мне этого добиться? Какая комбинация DNS-записей, псевдонимов или поддоменов мне нужна?

Вы не указываете, какой веб-сервер собираетесь использовать, но на высоком уровне вам нужно:

  1. Добавьте запись A * .mysite.com, указывающую на IP-адрес вашего сервера. Это стандартный тип записи, и все провайдеры его поддерживают. (Вот пример с GoDaddy https://uk.godaddy.com/help/setting-up-wildcard-dns-3301)
  2. Убедитесь, что виртуальный хост по умолчанию на вашем веб-сервере - это тот, который обслуживает ваш сайт. Этот виртуальный хост будет перехватывать любой трафик, запрашивающий адрес, нигде не указанный. (Вот пример для Apache https://httpd.apache.org/docs/2.2/vhosts/examples.html#default)
  3. На каком бы языке вы ни писали сайт, используйте данные, переданные с веб-сервера в ваш код об адресе (имени хоста), используемом в HTTP-запросе. Так вы различаете свои клиентские сайты. (Вот пример PHP https://stackoverflow.com/questions/5128474/php-serverserver-name-correct-use)