
Я обслуживаю несколько веб-сайтов для своих клиентов на одном сервере. Во время разработки я просто создаю поддомен на своем собственном домене. Пример client.mydomain.example
. Часто у моих клиентов уже есть домен и электронная почта от другого провайдера. Я не хочу размещать электронную почту для своих клиентов.
Я попробовал три разных способа настройки DNS:
- Создайте HTTP-перенаправление с
clientdomain.example
,www.clientdomain.example
а затем запись CNAME для ,www.clientdomain.exmple
указывающую на временный поддомен на моем сервереclient.mydomain.example
. - Иметь запись A от
(*.)clientdomain.tld
IP-адреса моего сервера, но оставить MX и т. п., чтобы они указывали на их текущий почтовый хост. - Настроить собственные серверы имен и использовать их для домена моего клиента. Затем настроить так же, как 2.
Насколько я могу судить, у всех трех вариантов есть свои плюсы и минусы:
- Плюсы:Удобно. Я могу изменить IP-адрес на своем сервере, переместить его в другой серверный парк, настроить отказоустойчивость, балансировку нагрузки и т. д.
Минусы:Я заставляю своих клиентов использоватьwww
, и если у них уже есть сайт,non-www
они могут пострадать от SEO-vise(?). Кроме того, дополнительная запись CNAME плохо влияет на скорость страницы. - Плюсы:Никаких проблем с SEO или скоростью загрузки страниц. Простая настройка.
Минусы:Если мне нужно изменить IP, мне нужно будет внести изменения в DNS для ВСЕХ моих клиентских сайтов. - Плюсы:Никаких проблем с SEO или скоростью загрузки страниц. Если мне нужно сменить сервер, я могу сделать это для всех моих клиентских сайтов сразу, поскольку настройки DNS удобно настроены на моих собственных серверах имен.
Минусы:Мне нужно запустить собственные серверы имен. Мне также нужно настроить записи MX и, возможно, другие записи DNS для моих клиентов.
На данный момент я предпочитаю первый способ, поскольку считаю, что в большинстве случаев плюсы перевешивают минусы.
Есть ли другой способ перенаправления с домена на сервер без указания IP-адреса?
Пояснение: Решение 1 работает для меня, но оно медленнее из-за двух шагов перед тем, как перейти к финальной записи A. В идеале я хотел бы указать non-www
и www
на домен моего сервера, но, насколько я знаю, это невозможно с записью CNAME, верно?
решение1
Обратите внимание, что a — CNAME
это вовсе не HTTP-перенаправление.
Единственное перенаправление здесь — с
example.com
наwww.example.com
и его можно сделать постоянным. ДополнительноеCNAME
— на уровне DNS и будет кэшироваться, так что оно не повлияет на производительность или скорость сайта вообще.Ваш веб-сервер должен знать домен клиента, независимо от того, кто размещает DNS.
Вот почему я бы предпочел ваш случай №1, с лучшим пониманием:
- Предоставьте клиенту
www.example.com. CNAME client.example.net.
возможность самостоятельно изменить IP-адрес, если это необходимо. - Посоветуйте, как сделать перенаправление с адреса без www на адрес с www на их текущем веб-сервере.
- Привяжите фактическое доменное имя к вашему
client.example.net
в конфигурации веб-сервера.
В случае №3 вам придется не только технически размещать DNS-серверы, но и отвечать за выполнение обновлений всякий раз, когда клиенту потребуется новая сторонняя запись.
решение2
Итак, если я правильно понял, вы хотите иметь возможность после этапа разработки просто указать cname на ваш сервер (client.mydomain.tld) и обрабатывать все остальное на вашем собственном сервере.
То, что я попробовал в своей настройке прямо сейчас с Cloudflare для управления записями DNS, это просто поместить две записи cname, одну www.client.tld и одну client.tld. После этого вы можете обрабатывать запрос на своем сервере и просто переписывать URL в соответствии с конкретными потребностями.
Я бы тоже выбрал ваш вариант номер один, так как с ним проще всего справиться.
А также я нашел некоторую информацию об использовании записей CNAME здесь: Следует ли использовать CNAME для поддоменов?