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

Как сделать «псевдонимы голого домена», например DNS-хосты, которые его поддерживают?

Моя цель - использовать страницы GitHub и также получают выгоду от их CDN, без необходимости использовать сторонний DNS-хост, который поддерживает типы записей DNS ALIAS (или ANAME - ни то, ни другое не являются принятыми стандартами). Я хочу знать, как они это делают, может кто-нибудь объяснить?

У нас есть много вопросов о псевдонимах DNS с записями CNAME, но в этой конкретной ситуации я не могу CNAME голого домена для username.github.io.

Если я сделаю это с Apache или Nginx, чтобы www.example.com работал как страница GitHub, будет ли это работать и сломаю ли я что-нибудь вроде электронной почты?

Apache

<VirtualHost *:80>
        ServerName example.com
        Redirect 301 / http://username.github.io/
</VirtualHost>

Nginx

server {
    server_name example.com;
    return 301 http://username.github.io/;
}

Приведенное выше предполагает CNAME для www => username.github.io и запись A для голого домена => одного из моих серверов с указанной выше конфигурацией.

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

Это предложение бессмысленно. В обоих упомянутых случаях настраиваемые типы DNS ALIAS и ANAME внутренне разрешаются в пул записей A. Таким образом, с точки зрения конечного пользователя, вы не нарушаете никаких стандартов. Любой клиент, пытающийся подключиться к имени хоста, которое вы настроили с помощью ALIAS (я могу говорить от имени DNSimple, учитывая, что я работаю на них), вернет тот же список A-записи, который вернет целевое имя хоста.

но в этой конкретной ситуации я не могу привязать голый домен к username.github.io.

Теоретически можно, но практически не хочется. Согласно RFC, CNAME не может сосуществовать с каким-либо дополнительным типом записи. Это означает, что если вы укажете CNAME для корневого домена, вы затените любую другую запись, связанную с корневым доменом, в основном нарушив способность корневого домена разрешать.

Если я сделаю это с Apache или Nginx, чтобы www.example.com работал как страница GitHub, будет ли это работать и сломаю ли я что-нибудь вроде электронной почты?

Вы можете настроить www.example.com как CNAME, если вам не нужны другие записи DNS, прикрепленные к этому имени хоста. Обычно это нормально.

Из конфигурации веб-сервера вам ничего не нужно делать. Если вы настроите www.example.com как CNAME из username.github.io, любой запрос www.example.com разрешит IP-адреса, связанные с username.github.io а веб-серверы GitHub обработают запрос.

Тем не менее, в этом случае вы не решили проблему того, что вы хотите делать с корневым доменом. На данный момент единственное, что вы можете сделать, - это перенаправить HTTP с корневого домена на www.example.com имя хоста.

Указанные вами фрагменты конфигурации будут работать таким образом.