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

Рекомендации по размещению DNS-записей и поддоменов

Скажи, что у меня есть mydomain.com:

Лучше использовать вариант А:

[A] mydomain.com      123.45.67.89
[A] www.mydomain.com  123.45.67.89

или вариант Б:

[A]     mydomain.com      123.45.67.89
[CNAME] www.mydomain.com  mydomain.com

Каким будет эффект от выбора одного за другим?

Второй вопрос: скажем, я хочу иметь поддомен в blog.mydomain.com. И я установил для него следующие записи:

[A] blog.mydomain.com  123.45.67.89

И сделать его доступным, когда пользователь набирает www.blog.mydomain.com, Я также вставляю следующую запись:

[A] www.blog.mydomain.com  123.45.67.89

Вопрос в том, это обычная практика? Или есть способы сделать это лучше? Я хочу достичь (доступ пользователя -> перенаправление):

mydomain.com          -> mydomain.com
www.mydomain.com      -> mydomain.com
blog.mydomain.com     -> blog.mydomain.com
www.blog.mydomain.com -> blog.mydomain.com
other.mydomain.com    -> error

Ура!

Как правило, лучшая практика для простоты обслуживания выглядит примерно так:

[A]     mydomain.com            123.45.67.89
[CNAME] www.mydomain.com        mydomain.com
[CNAME] blog.mydomain.com       mydomain.com
[CNAME] www.blog.mydomain.com   mydomain.com
[A]     mail.mydomain.com       123.45.67.89
[MX]    mydomain.com            mail.mydomain.com

Это позволяет вам изменить свою запись A для mydomain.com, не нарушая вашу почтовую запись или не меняя каждый поддомен вручную.

Вам также необходимо настроить свой веб-сервер для ответа на эти имена. Вот пример этого в Apache:

NameVirtualHost 123.45.67.89:80
<VirtualHost 123.45.67.89:80>
    DocumentRoot /var/www/html/mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    ErrorLog logs/mydomain.com-error_log
    CustomLog logs/mydomain.com-access_log combined
</VirtualHost>

<VirtualHost 123.45.67.89:80>
    DocumentRoot /var/www/html/blog.mydomain.com
    ServerName blog.mydomain.com
    ServerAlias www.blog.mydomain.com
    ErrorLog logs/blog.mydomain.com-error_log
    CustomLog logs/blog.mydomain.com-access_log common
</VirtualHost>

Для упомянутых вами перенаправлений:

Вопрос в том, это обычная практика? Или есть способы сделать это лучше? Я хочу достичь (доступ пользователя -> перенаправление):

mydomain.com          -> mydomain.com
www.mydomain.com      -> mydomain.com
blog.mydomain.com     -> blog.mydomain.com
www.blog.mydomain.com -> blog.mydomain.com
other.mydomain.com    -> error

Чтобы фактически изменить URL-адрес, отображаемый в адресной строке клиента, это необходимо сделать на стороне сервера с помощью mod_rewrite, а не функции DNS.

Вариант B. Используйте записи CNAME, чтобы указать псевдонимы для существующих записей A. То же самое относится к блогам и записям на www.blog. Выбор записи CNAME позволяет вам изменить фактический IP-адрес в одном месте (запись A). Если вы сделаете все записи как записи A, вам нужно будет обновить каждую отдельно.

В первом вопросе вы можете сделать это любым способом. Единственное реальное влияние наличия такого имени в качестве CNAME заключается в том, что при поиске этого имени это вызовет в некоторых случаях второй поиск DNS, чтобы получить имя, на которое оно указывает (так что теперь я смотрю вверх www.example.com и получить указатель на example.com и нужно найти его, чтобы получить IP). Разница обычно составляет порядка миллисекунд, и иногда IP-адрес указателя также включается в ответ, если сервер знает об этом, избегая второго поиска. Тем не менее, он по-прежнему создает большие пакеты DNS. Я предпочитаю просто определять их как A записи и использование CNAMEs для хостов вне моего домена.

Что касается второго вопроса, вы можете настроить их по своему усмотрению, просто убедитесь, что веб-сервер ответит за них и предоставит соответствующее перенаправление на уровне HTTP по желанию (помните, DNS не будет перенаправлять адресный запрос браузера на другой URL-адрес) .