Задать вопрос
@victafonenko

Так как же все-таки правильно прикреплять домены и поддомены к хостингу, какой самый правильный способ?

Здравствуйте, дайте пожалуйста новичку правильное воспитание и правила хорошего вкуса в делах связывания домена/и его поддоменов с хостингом.

Как я понял есть два способа,
прописыванием NS записей ( как здесь https://www.reg.ru/support/hosting-i-servery/sajty... )

Или просто добавлением в домене A-записей с IP адресом сервера, как в инструкции здесь support.2domains.ru/knowledgebase.php?article=66 . Как то с самого начала пользуюсь именно этим способом, как советуют в статье,
т.е. добавляю три А-записи к домену с адресом хостинг-сервера, типа:
@
www
*

И вроде бы все работает, и никаких dns серверов прописывать не нужно.
Только заметил я недавно, что с таким конфигом на Апаче-хостинге происходят невероятные вещи, к примеру любой поддомен сайта site.ru (совершенно любой, можно наугад, к примеру sub1.site.ru) будет отображать содержимое сайта site.ru, хотя я конфиги не трогал и не изменял. А к примеру домен просто привязанный вышеописанным способом через А записи к серверу но не имеющий созданной для него хост-записи и директории - будет отображать по своему адресу содержимое другого соседнего сайта на хостинге. Жесть вообщем.

Скажите пожалуйста, так как правильно, по православному надо все делать? И как тогда направлять на хостинг поддомены основного домена, чтобы все корректно и по правильному отображалось и только там, где нужно?
  • Вопрос задан
  • 3471 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
martin74ua
@martin74ua Куратор тега Linux
Linux administrator
Оба варианта правильные.

По поводу непоняток во втором варианте. Ну так вы же сами указали, что * - т.е. все поддомены ссылаются на ваш сайт. А дальше все происходит так, как вы настроите:
для апача:
<VirtualHost a.b.c.d:80>
ServerName site.ru
ServerAlias www.site.ru *.site.ru
...
</VirtualHost>

В этом варианте вы указали, что основное имя сайта - site.ru, но кроме него принимать запросы на www.site.ru и *.site.ru. Честно говоря www.site.ru в ServerAlias является излишним.
Т.е. любой поддомен вплоть до kfjjvkfjvbkjbvkjbvkjvbkejbv.site.ru приведет на ваш виртхост.
Если же в ServerAlias не указан *.site.ru - то произойдет следующее. Запрос придет на сервер, но подходящего виртхоста нет. Тогда апач отдаст этот запрос на обработку либо первому виртхосту в конфиге, либо так называемому default. Если админы хостинга не настроили default виртхост - значит отработает какой нить сайт с этого сервера.
Отсюда вывод - если уж вы указываете * IN A a.b.c.d в конфиге зоны - будьте добры корректно настроить виртхост - либо прописать *.site.ru в алиасе, либо создавайте для каждого нужного вам поддомена свой виртхост. Но это все равно не освободит вас от необходимости указать *.site.ru в алиасе какого нить своего виртхоста.
Не хотите такого поведения - прописывайте в настройках днс ровно те записи, которые вам нужны. Ну и виртхосты под них делайте.

Разница между прописыванием NS серверов и A записей - это просто место, где вы будете рулить доменом. Если вы перенесли NS сервера вашего домена на сервера хостинга - то необходимые записи в днс надо создавать в панели управления хостингом. Если же только A записи - то управление доменом остается у регистратора, а управление хостингом - у хостера.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
что такое NS записи? разберитесь с терминами.
Правильно - А запись, чтобы по адресу mydomain.com вы попадали на нужный сервер (определялся верный IP)
NS-сервер в записи указывает на NS сервера, которые будут отвечать тем, кто будет искать mydomain.com

А то, что у вас apache на хостинге настроен криво, это уже другой вопрос. Apache поддерживает виртуальный хостинг, и на одном и том же IP могут висеть разные сайты. Как Apache настроен, так он и будет отвечать для неизвестных ему сайтов (выдавать дефолтный например)
Ответ написан
Комментировать
Ogogon
@Ogogon
DNS всегда работает одним способом. Каждую зону (домен) обслуживают как минимум два DNS-сервера. Первичный (primary) хранит оригинал файла, описывающего зону, IP-адреса ее машин, поддомены и другую информацию. Вторичный (secondary) сервер, или серверы, хранит те же сведения, получаемые с первичного. Это страховка от его отказа. В идеале все серверы должны иметь различные сетевые подключения. Все они перечислены в файле зоны, как записи типа 'NS'.

DNS-серверы могут быть у самого владельца ресурса, их может предоставить web-хостер или регистратор, при делегировании домена. Главное, чтобы они были, не меньше двух, и с синхронными сведениями.

Редактировать файл зоны и его записи можно как непосредственно, так и через web-интерфейс. Это ничего не меняет.

Если Вы создаете web-сервер, то запись о нем должна быть в зоне его домена, т.е. в итоге должен быть установим его IP-адрес. Это запись типа 'А' или ссылка на другую запись типа 'А'.

Теперь о web-сервере. Его протокол позволяет получать сведения о доменном имени сайта, к которому осуществляется обращение.

Поэтому, нескольким разным сайтам можно выдать один и тот-же IP-адрес. Это разрешенный прием. Web-сервер все равно поймет, к какому из них осуществляется обращение.
Такая хитрость называется 'name based virtual hosting' или 'виртуальный хостинг базирующися на доменных именах'.

Для реализации этого необходимо правильно настроить Ваш web-сервер. Упомянутый Apache это прекрасно умеет делать.
Нужно изучить документацию на конкретный, обратив внимание на настройку виртуального хостинга.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы