Пользовательский домен для страниц проекта GitHub

436

У меня есть gh-pagesветка в одном из моих репозиториев http://github.com . Страницы проекта GitHub работают нормально, если я захожу на http://myuser.github.com/myrepo

Я хочу настроить собственный домен (myexample.com), который будет обслуживать страницы этого проекта. Я хочу и то myexample.com и другоеwww.myexample.com обслуживать эти страницы проекта.

Страницы GitHub помогают сделать запись A и запись CNAME в вашем DNS. Запись A имеет смысл, но я не знаю, какую запись CNAME сделать в моем DNS.

В gh-pagesдокументах говорят , чтобы сделать CNAMEзапись для «charlie.github.com» , который является вместилищем страницы пользователя. У меня нет хранилища пользовательских страниц - у меня есть только хранилище проектов и gh-pagesветвь, для которой я хочу использовать myexample.comи www.myexample.com.

Нужно ли создавать хранилище пользовательских страниц, чтобы я мог использовать страницу своего проекта для www.myexample.com и myexample.com?

Я бы просто попробовал, но я хочу убедиться, что это сработает, так как у меня уже есть www.myexample.com, и я не хочу ошибаться.

Я написал по электронной почте поддержку GitHub, и их ответ был

Насколько я знаю, нельзя одновременно указывать на одни и те же страницы.

Мне трудно поверить, что они будут поддерживать записи A только для страниц проекта.

Кто-нибудь успешно делал это раньше?

rynop
источник
10
Я настроил lacewing-project.org только с записью A, указывающей на 207.97.227.245 (без записей CNAME), и она отлично работает. Я также поместил файл с именем CNAME в корень ветви gh-pages, содержащий имя домена.
Джеймс Маклафлин
В моем случае, просто поместив файл CNAME в ветку gh-pages, добились цели, спасибо!
Jarandaf

Ответы:

522

23.01.19 ОБНОВЛЕНИЕ:

С момента моего последнего ответа все немного изменилось (в лучшую сторону). Этот обновленный ответ покажет вам, как настроить:

  1. Корневая вершина (example.com)
  2. Поддомен (www.example.com)
  3. HTTPS (необязательно, но настоятельно рекомендуется)

В итоге все запросы example.comбудут перенаправлены на https://www.example.com (или http: //, если вы решите НЕ использовать HTTPS). Я всегда использую в wwwкачестве моей последней посадки. Почему ( 1 , 2 ), для другого обсуждения.

Этот ответ длинный, но не сложный. Я был многословен для ясности, поскольку документы GitHub по этой теме не являются четкими или линейными.

Шаг 1: Включите страницы GitHub в настройках GitHub

  1. Из вашего репо, нажмите на вкладку
  2. Прокрутите вниз до GitHub Pagesраздела. У вас есть два варианта:
  3. Выбор master branchбудет относиться /README.mdк вашей сети index.html. Выбор master branch /docs folderбудет относиться /docs/README.mdк вашей сети index.html.
  4. Выберите тему
  5. Подождите минуту, пока GitHub публикует ваш сайт. Убедитесь, что он работает, нажав на ссылку рядом сYour site is ready to be published at

Шаг 2: Укажите пользовательский домен в настройках GitHub

Введите здесь свое доменное имя и нажмите save:

Это тонкий, но важный шаг.

  • Если пользовательский домен, который вы добавили на свой сайт GitHub Pages example.com, www.example.comбудет перенаправлен наexample.com
  • Если пользовательский домен, который вы добавили на сайт GitHub Pages www.example.com, example.comбудет перенаправлен на www.example.com.

Как упомянуто ранее, я рекомендую всегда приземляться в, wwwтаким образом я вошел www.example.comкак показано выше.

Шаг 3: Создайте записи DNS

В веб-консоли вашего DNS-провайдера создайте четыре Aзаписи и одну CNAME.

  1. AЗаписи для @(aka root apex):

Некоторые провайдеры DNS попросят вас указать @, другие (например, AWS Route 53) оставят субдомен пустым для указания @. В любом случае, они являются Aзаписи для создания:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Создайте CNAMEзапись, чтобы указать www.example.com YOUR-GITHUB-USERNAME.github.io.

Это самая запутанная часть.

Обратите внимание, что YOUR-GITHUB-USERNAME НЕ GitHub репо! Значение YOUR-GITHUB-USERNAMEопределяется этим графиком .

Для сайта с пользовательскими страницами (скорее всего, вы), CNAMEзапись будет username.github.io, например:

Для сайта страниц организации , CNAMEзапись будет orgname.github.io, например:

Шаг 5: Подтвердите записи DNS

  1. Подтвердите свои Aзаписи, запустив dig +noall +answer example.com. Он должен вернуть четыре 185.x.x.xIP-адреса, которые вы ввели.

  2. Подтверждает вашу CNAMEзапись, запустив dig www.example.com +nostats +nocomments +nocmd. Должно вернутьCNAME YOUR-GITHUB-USERNAME.github.io

Разрешение / распространение этих записей DNS может занять около часа. Как только они это сделают, откройте ваш браузер, http://example.comи он должен перенаправить наhttp://www.example.com

Шаг 6: Конфигурация SSL (HTTPS). Необязательно, но настоятельно рекомендуется

После того, как ваш пользовательский домен заработал, вернитесь к настройкам репо. Если страница настроек уже открыта, обновите страницу.

Если под Enforce HTTPSфлажком есть сообщение о том, что оно все еще обрабатывается, вам придется подождать. Вам также может понадобиться нажать saveкнопку в Custom domainразделе, чтобы начать Enforce HTTPSобработку.

После завершения обработки это должно выглядеть так:

введите описание изображения здесь

Просто установите Enforce HTTPSфлажок и укажите в браузере https://example.com. Он должен перенаправить и открытьhttps://www.example.com

ЭТО ОНО!

GitHub будет автоматически поддерживать ваш сертификат HTTPS в актуальном состоянии И должен обрабатывать апекс для wwwперенаправления по HTTPS.

Надеюсь это поможет!!

...

Старый (до 23.01.19) ответ

Так что я понял это. Джеймс Маклафлин дал мне толчок, который мне был нужен.

Чтобы настроить собственный домен для репозитория Project Pages gh-pages, который обрабатывает www.yourdomain.com и yourdomain.com (предполагается, что у вас уже есть ветка gh-pages в вашем репо):

  1. Из репо вашего проекта, ветка gh-pages. Создайте файл CNAME с содержимым yourdomain.com. Зафиксируйте затем нажмите.
  2. В вашем диспетчере DNS настройте две cnameзаписи. Один для корневого апекса (@) и один для www. Оба указывают на YOURusername.github.io. Если ваш DNS-провайдер НЕ поддерживает ALIASзаписи в корневой вершине (@), просто создайте Aзаписи, которые указывают на 192.30.252.153и192.30.252.154
  3. Подождите, пока обновятся ваши серверы имен:

    dig yourdomain.com +nostats +nocomments +nocmd

rynop
источник
14
По состоянию на 19 апреля 2012 г. документация GitHub использует 204.232.175.78в качестве IP-адреса.
Асеем Кишор
31
Проверено 6 февраля 2014 года и документы github говорят: Создать записи DNS A, которые указывают на следующие IP-адреса: 192.30.252.153, 192.30.252.154.
Дэнни
2
«Если вы используете запись A, которая указывает на 207.97.227.245 или 204.232.175.78, вам потребуется обновить настройки DNS, поскольку мы больше не обслуживаем страницы непосредственно с этих серверов». help.github.com/articles/my-custom-domain-isn-t-working - 3/8/14
eddywashere
11
Я не думаю, что можно создать запись CNAME из голого домена @. Вот почему вам нужны записи A для обработки перенаправления с открытого домена на поддомен www. Это проблема с любым облачным хостом. Нет гарантии фиксированного IP.
сверхсветовой
2
@rynop GoDaddy не разрешает @ и www yourusername.github.io, только одна запись CNAME на поддомен :(
Tejas Manohar
241

обзор

Документация немного запутанным , когда дело доходит до проекта страниц , в отличие от пользовательских страниц . Такое чувство, что вам нужно сделать больше, но на самом деле процесс очень прост.

Это включает в себя:

  1. Настройка 2 статических A-записей для голого (без www) домена.
  2. Создание одной записи CNAME для www, которая будет указывать на URL GitHub. Это будет обрабатывать перенаправление www для вас.
  3. Создание файла с именем CNAME (заглавными буквами) в корневом каталоге вашего проекта на ветке gh-pages. Это скажет Github, на какой URL отвечать.
  4. Подождите, пока все распространится.

Что вы получите

Ваш контент будет обслуживаться с URL-адреса в форме http://nicholasjohnson.com .

Посещение http://www.nicholasjohnson.com вернет редирект 301 на голый домен.

Путь будет учитываться перенаправлением, поэтому трафик на http://www.nicholasjohnson.com/angular будет перенаправлен на http://nicholasjohnson.com/angular .

Вы можете иметь одну страницу проекта на репозиторий, поэтому, если ваши репозитории открыты, вы можете иметь столько, сколько захотите.

Вот процесс:

1. Создать записи

Для записей A укажите @ на следующие IP-адреса:

@: 185.199.108.153
@: 185.199.109.153
@: 185.199.110.153
@: 185.199.111.153

Это статические IP-адреса Github, с которых будет обслуживаться ваш контент.

2. Создайте запись CNAME

Для записи CNAME укажите www на yourusername.github.io. Обратите внимание на трейлинг-стоп. Обратите внимание, что это имя пользователя, а не имя проекта . Вам еще не нужно указывать название проекта. Github будет использовать файл CNAME чтобы определить, из какого проекта будет работать контент.

например

www: forwardadvance.github.io.

Цель CNAME - перенаправить весь трафик поддоменов www на страницу GitHub, которая будет перенаправлять 301 на пустой домен.

Вот скриншот конфигурации, которую я использую для своего собственного сайта http://nicholasjohnson.com :

Записи A и CNAME необходимы для статических страниц Github

3. Создайте файл CNAME

Добавьте файл с именем CNAME в корневой каталог вашего проекта в ветке gh-pages. Он должен содержать домен, который вы хотите обслуживать. Убедитесь, что вы совершаете и нажимаете.

например

nicholasjohnson.com

Этот файл говорит GitHub использовать это хранилище для обработки трафика в этот домен.

4. Подождите

Теперь подождите 5 минут, страница вашего проекта должна быть активна.

superluminary
источник
1
Нет, домен apex имеет статический IP-адрес. Субдомен www имеет CNAME.
Сверхсветовой
4
@superluminary, я повторил ваш процесс, и у меня есть две проблемы: 1) я использую freeDNS fear.org для обмена DNS, что не позволяет добавлять трейлинг. в username.github.io .. 2) когда я добавил github.io url без трейлинга., mydomain.com работает, но я не могу получить доступ с www.mydomain.com ??
bistaumanga
4
Часть, которую я не мог выяснить через GitHub docs, была тем, какой URL использовать для проекта. Спасибо за этот ответ: «это имя пользователя, а не имя проекта». так что пользуйтесьyourUserName.github.io.
pkamb
1
Я обновил это решение и очень рекомендую это сделать. Вы можете заставить его работать другими способами, например, используя CNAME для @ host, но это сломает электронную почту и т. Д. Это лучшее решение, которое я нашел. Спасибо.
Стивен Л.
1
Спасибо! Я застрял на правильном значении для записи CNAME в DNS - только organization.github.io, независимо от того, какой проект под этой организацией вы пытаетесь обслуживать. (т. е. НЕ organization.github.io/repo)
Либби,
21

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

CNAME файл на gh-страницах ветке будет иметь одну строку:

www.mydomain.com (вместо mydomain.com )

Независимо от ваших предпочтений по перенаправлению (другими словами, независимо от того, что находится в вашем файле CNAME в ветке gs-pages), с вашим провайдером DNS вы должны настроить его следующим образом:

A      @    192.30.252.154
A      @    192.30.252.153
CNAME  www  username.github.io
Фил
источник
@zwacky, почему я не могу просто указать CNAME на @? почему «www.mydomain.com» и «mydomain.com» должны разрешать потенциально разные IP-адреса?
aaa90210
19

Короткий ответ

Эти подробные объяснения хороши, но путаницу ОП (и мою) можно решить одним предложением: «Направьте DNS на имя пользователя или организацию GitHub , игнорируя конкретный проект, и добавьте соответствующие файлы CNAME в репозитории вашего проекта: GitHub отправит правильный DNS для правильного проекта на основе файлов в репозитории. "

Джим Пиварски
источник
1
Я понятия не имею, что означает «отправка DNS».
выступление
Перенаправляйте DNS-запросы, чтобы HTTP-запросы с конкретными именами доменов получали правильные документы в качестве ответов.
Джим Пиварски
13

По состоянию на 29 августа 2013 г. документация Github утверждает, что:

Предупреждение: подпути страниц проекта, такие как http://username.github.io/projectname , не будут перенаправлены в пользовательский домен проекта.

Амио
источник
3
Я запутался, почему они добавили это поведение. Я хочу, чтобы мой .com указывал на страницы github, а не наоборот.
Джордан Весы
9
Я был действительно смущен этим тоже. Насколько я понимаю, вы все еще можете указывать yoursite.com на страницах github, но yourusername.github.io/yoursite не будет перенаправлять на yoursite.com. Это нормально, потому что yoursite.com все еще будет работать, просто убедитесь, что обновили свои записи DNS и подождите, пока это не решится. help.github.com/articles/...
eddywashere
Это должно иметь SEO (поисковая оптимизация) последствия для сайта. Говорят, что Google понизит рейтинг содержимого, доступного с нескольких доменов, что является одной из нескольких причин применения перенаправлений 301 («постоянный») с username.github.io/projectnameна www.projectname.com.
BorromeanNot
3

Сейчас все намного проще!

  1. Обновите запись своего домена Apex (@), чтобы указать

192.30.252.154

192.30.252.153

  1. Отредактируйте поле домена Custome в настройках репозитория github.

enter image description here

  1. www и другие субдомены могут быть обновлены как CNAME для apex домена.
Рафаф Тахсин
источник
2

После небольшого разочарования я только что обнаружил, что если вы используете PairNIC , все, что вам нужно сделать, это включить настройку «Web Forwarding» в «Custom DNS» и указать адрес username.github.io/project. автоматически настроить записи apex и subdomain для вас. Похоже, он делает именно то, что предлагается в принятом ответе. Тем не менее, это не позволит вам сделать то же самое, добавив записи вручную. Очень странно. В любом случае, мне потребовалось некоторое время, чтобы понять это, поэтому я решил поделиться, чтобы избавить всех остальных от неприятностей.

Брэндон Фосдик
источник
0

Я хотел бы разделить мои шаги , которые немного отличаются от того, что предлагают rynop и superluminary .

  • за A записи точно такой же но
  • вместо того , чтобы создать CNAMEдля wwwя предпочел бы , чтобы перенаправить его в мой пустой домен ( non-www)

Эта конфигурация относится к руководству предпочтительного домена . Настройка домена wwwдля non wwwили наоборот может отличаться для каждого из поставщиков домена. Так как мой домен находится под GoDaddy, поэтому в настройках домена я установил его с помощью переадресации субдомена (301).

В результате указания домена на репозиторий Github он выдаст все URL-адреса как для, так masterи дляgh-pages ветви аналогично , как те , которые я перечислил ниже идет на основной домен:

мастер

Создавая CNAMEфайл на masterветке (проверьте это в моем пользовательском репозитории ).

http://hyipworld.github.io/
http://www.hyip.world/
http://hyip.world/

GH-страница

Создав тот же CNAMEфайл в gh-pagesветке (проверьте это в моем репозитории проекта ).

http://hyipworld.github.io/maps/
http://www.hyip.world/maps/
http://hyip.world/maps/

В дополнение к CNAMEвышеуказанному файлу вам может потребоваться полностью обойти обработку Jekyll на страницах GitHub, создав файл с именем .nojekyllв корне репозитория ваших страниц.

Chetabahana
источник
3
Я бы порекомендовал не использовать Godaddy, а только личное мнение
MMachinegun