Моя цель - использовать страницы 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
имя хоста.
Указанные вами фрагменты конфигурации будут работать таким образом.