Domena niestandardowa dla stron projektu GitHub

436

Mam gh-pagesoddział w jednym z moich repozytoriów http://github.com . Strony projektu GitHub działają dobrze, jeśli wejdę na http://myuser.github.com/myrepo

Chcę skonfigurować domenę niestandardową (myexample.com), która będzie obsługiwać strony tego projektu. Chcę oba myexample.com i www.myexample.comsłużyć tym stronom projektu.

Strony GitHub pomagają napisać rekord A i CNAME w twoim DNS. Rekord A ma sens, ale nie wiem, jaki rekord CNAME należy wykonać w moim DNS.

Dokumenty gh-pagesmówią, że należy utworzyć CNAMErekord dla „charlie.github.com”, który jest repozytorium strony użytkownika. Nie mam repozytorium strony użytkownika - mam tylko repozytorium projektu i gh-pagesgałąź, z której chcę korzystać myexample.comi www.myexample.com.

Czy muszę utworzyć repozytorium strony użytkownika, aby móc korzystać ze strony projektu dla www.myexample.com i myexample.com?

Chciałbym tylko spróbować, ale chcę się upewnić, że to zadziała, ponieważ mam już www.myexample.com na żywo i nie chcę popełnić błędu.

Wysłałem e-mail do pomocy technicznej GitHub, a ich odpowiedź brzmiała:

O ile mi wiadomo, oba nie mogą wskazywać na te same strony gh.

Trudno mi uwierzyć, że będą obsługiwać tylko rekordy A dla stron projektu.

Czy ktoś wcześniej to zrobił?

rynop
źródło
10
Skonfigurowałem lacewing-project.org z samym rekordem A wskazującym na 207.97.227.245 (brak rekordów CNAME) i działa dobrze. W katalogu głównym gałęzi gh-pages umieściłem również plik o nazwie CNAME zawierający nazwę domeny.
James McLaughlin
W moim przypadku po prostu umieszczenie pliku CNAME w gałęzi gh-pages załatwiło sprawę, dziękuję!
jarandaf

Odpowiedzi:

522

AKTUALIZACJA 1/23/19:

Od czasu mojej ostatniej odpowiedzi wiele się zmieniło (na lepsze). Ta zaktualizowana odpowiedź pokaże, jak skonfigurować:

  1. Główny wierzchołek (example.com)
  2. Poddomena (www.example.com)
  3. HTTPS (opcjonalnie, ale zdecydowanie zalecane)

Na koniec wszystkie żądania example.comzostaną przekierowane na https://www.example.com (lub http: // jeśli zdecydujesz się NIE używać HTTPS). Zawsze używam wwwjako ostatniego lądowania. Dlaczego ( 1 , 2 ) jest na kolejną dyskusję.

Ta odpowiedź jest długa, ale to jest nie skomplikowana. Mówiłem jasno, ponieważ dokumenty GitHub na ten temat nie są jasne ani liniowe.

Krok 1: Włącz strony GitHub w ustawieniach GitHub

  1. W repozytorium kliknij kartę
  2. Przewiń w dół do GitHub Pagessekcji. Masz dwie opcje:
  3. Wybór master branchbędzie traktowany /README.mdjak twoja sieć index.html. Wybór master branch /docs folderbędzie traktowany /docs/README.mdjak twoja sieć index.html.
  4. Wybierz motyw.
  5. Poczekaj chwilę, aż GitHub opublikuje Twoją witrynę. Sprawdź, czy działa, klikając link obokYour site is ready to be published at

Krok 2: Określ domenę niestandardową w ustawieniach GitHub

Wpisz tutaj swoją niestandardową nazwę domeny i naciśnij save:

To jest subtelny, ale ważny krok.

  • Jeśli domena niestandardowa dodana do witryny GitHub Pages to example.com, www.example.comprzekieruje doexample.com
  • Jeśli domena niestandardowa dodana do witryny GitHub Pages to www.example.com, example.comprzekieruje do www.example.com.

Jak wspomniano wcześniej, polecam zawsze lądować na, wwwwięc weszłam www.example.comjak na zdjęciu powyżej.

Krok 3: Utwórz wpisy DNS

W konsoli internetowej dostawcy DNS utwórz cztery Arekordy i jeden CNAME.

  1. ARekordy dla @(aka root root):

Niektórzy dostawcy DNS będą Cię podawać @, inni (np. AWS Route 53) pozostawią subdomenę pustą, aby wskazać @. W obu przypadkach to Arekordy utworzyć:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
  1. Utwórz CNAMErekord, aby wskazać www.example.com YOUR-GITHUB-USERNAME.github.io.

To najbardziej myląca część.

Zwróć uwagę na YOUR-GITHUB-USERNAME NIE nazwę repozytorium GitHub! Wartość YOUR-GITHUB-USERNAMEokreśla ta tabela .

W przypadku strony użytkownika (najprawdopodobniej kim jesteś), CNAMEwpis będzie username.github.io, np .:

Na stronach Organizacji miejscu, CNAMEwejście będzie orgname.github.io, ex:

Krok 5: Potwierdź wpisy DNS

  1. Potwierdź swoje Arekordy, uruchamiając dig +noall +answer example.com. Powinien zwrócić cztery 185.x.x.xwprowadzone adresy IP.

  2. Potwierdza Twój CNAMErekord, uruchamiając dig www.example.com +nostats +nocomments +nocmd. Powinien zwrócić aCNAME YOUR-GITHUB-USERNAME.github.io

Rozpoznanie / rozpowszechnienie tych wpisów DNS może potrwać około godziny. Gdy to zrobią, otwórz przeglądarkę http://example.comi powinna ona przekierować nahttp://www.example.com

Krok 6: Konfiguracja SSL (HTTPS). Opcjonalne, ale wysoce zalecane

Po uruchomieniu domeny niestandardowej wróć do ustawień repozytorium. Jeśli strona ustawień jest już otwarta, odśwież ją mocno.

Jeśli pod Enforce HTTPSpolem wyboru znajduje się komunikat informujący, że nadal się przetwarza, musisz poczekać. Konieczne może być również savenaciśnięcie przycisku w Custom domainsekcji, aby rozpocząć Enforce HTTPSprzetwarzanie.

Po zakończeniu przetwarzania powinno to wyglądać następująco:

wprowadź opis zdjęcia tutaj

Po prostu kliknij pole Enforce HTTPSwyboru i wskaż przeglądarkę https://example.com. Powinien przekierować i otworzyćhttps://www.example.com

OTÓŻ TO!

GitHub automatycznie aktualizuje Twój certyfikat HTTPS ORAZ powinien obsłużyć wierzchołek, aby wwwprzekierowywać przez HTTPS.

Mam nadzieję że to pomoże!!

...

Stara (przed 1/23/19) odpowiedź

Więc to rozgryzłem. James McLaughlin dał mi szturchnięcie, którego potrzebowałem.

Aby skonfigurować niestandardową domenę dla repozytorium stron projektu gh-pages, które obsługuje strony www.twoja_domena.com i twoja_domena.com (zakładając, że masz już repozytorium strony gh-strony):

  1. Z repozytorium projektu, gałąź gh-pages. Utwórz plik CNAME z zawartością yourdomain.com. Zatwierdź, a następnie wypchnij.
  2. W menedżerze DNS skonfiguruj dwa cnamerekordy. Jeden dla wierzchołka głównego (@) i jeden dla www. Oba wskazują na YOURusername.github.io. Jeśli Twój dostawca DNS NIE obsługuje ALIASrekordów na wierzchołku głównym (@), po prostu utwórz Arekordy wskazujące na 192.30.252.153i192.30.252.154
  3. Poczekaj na aktualizację serwerów nazw:

    dig yourdomain.com +nostats +nocomments +nocmd

rynop
źródło
14
W dniu 19 kwietnia 2012 r . Dokumentacja GitHub używa 204.232.175.78jako adresu IP.
Aseem Kishore,
31
Sprawdzono 6 lutego 2014 r. I github docs: Stwórz DNS A rekordy, które wskazują następujące adresy IP: 192.30.252.153, 192.30.252.154.
Danny
2
„Jeśli używasz rekordu A, który wskazuje na 207.97.227.245 lub 204.232.175.78, musisz zaktualizować ustawienia DNS, ponieważ nie obsługujemy już Stron bezpośrednio z tych serwerów”. help.github.com/articles/my-custom-domain-isn-t-working - 3/8/14
eddywashere
11
Nie sądzę, aby można było utworzyć rekord CNAME z samej domeny @. Dlatego potrzebujesz rekordów A, aby obsłużyć przekierowanie z samej domeny do subdomeny www. To problem z każdym hostem w chmurze. Brak gwarancji stałego adresu IP.
superluminarny
2
@rynop GoDaddy nie zezwala na @ i www na twoją nazwę użytkownika.github.io, tylko jeden rekord CNAME na subdomenę :(
Tejas Manohar
241

Przegląd

Dokumentacja jest trochę mylące, jeśli chodzi o wystawać strony , w przeciwieństwie do stron użytkowników . Wydaje się, że powinieneś zrobić więcej, ale w rzeczywistości proces ten jest bardzo łatwy.

To wymaga:

  1. Konfigurowanie 2 statycznych rekordów A dla domeny „naga” (bez www).
  2. Utworzenie jednego rekordu CNAME dla www, który wskaże adres URL GitHub. To zajmie się przekierowaniem dla Ciebie.
  3. Tworzenie pliku o nazwie CNAME (wielkie litery) w katalogu głównym projektu w gałęzi gh-pages. To powie Githubowi, na jaki adres URL odpowiedzieć.
  4. Poczekaj, aż wszystko się rozrośnie.

Co dostaniesz

Twoje treści będą dostarczane z adresu URL formularza http://nicholasjohnson.com .

Odwiedzenie strony http://www.nicholasjohnson.com zwróci przekierowanie 301 do nagiej domeny.

Przekierowanie będzie przestrzegać ścieżki, więc ruch do http://www.nicholasjohnson.com/angular zostanie przekierowany na http://nicholasjohnson.com/angular .

Możesz mieć jedną stronę projektu na repozytorium, więc jeśli twoje repozytoria są otwarte, możesz mieć ich tyle, ile chcesz.

Oto proces:

1. Utwórz rekordy A.

W przypadku rekordów A wskaż @ na następujące adresy IP:

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

Są to statyczne adresy IP Github, z których będą dostarczane Twoje treści.

2. Utwórz rekord CNAME

W przypadku rekordu CNAME wskaż www na twoją nazwę użytkownika.github.io. Uwaga końcowy kropka. Pamiętaj również, że jest to nazwa użytkownika, a nie nazwa projektu . Nie musisz jeszcze określać nazwy projektu. Github użyje pliku CNAME do ustalenia, z którego projektu ma być wyświetlana zawartość.

na przykład

www: forwardadvance.github.io.

Celem CNAME jest przekierowanie całego ruchu subdomeny www na stronę GitHub, która 301 przekieruje do samej domeny.

Oto zrzut ekranu konfiguracji używanej dla mojej własnej witryny http://nicholasjohnson.com :

Rekordy A i CNAME są wymagane dla stron statycznych Github

3. Utwórz plik CNAME

Dodaj plik o nazwie CNAME do katalogu głównego projektu w gałęzi gh-pages. Powinna zawierać domenę, którą chcesz obsługiwać. Upewnij się, że popełniasz i popychasz.

na przykład

nicholasjohnson.com

Ten plik informuje GitHub, aby używał tego repozytorium do obsługi ruchu do tej domeny.

4. Poczekaj

Teraz poczekaj 5 minut, strona projektu powinna być już aktywna.

superluminarny
źródło
1
Nie, domena wierzchołkowa ma statyczny adres IP. Poddomena www ma CNAME.
superluminarny
4
@superluminary, powtórzyłem twój proces i mam dwa problemy, 1) Korzystam z darmowego DNS afraid.org do udostępniania DNS, co nie pozwala na dodanie końcowego. w username.github.io .. 2) kiedy dodałem URL github.io bez trailing., mydomain.com działa, ale nie mogę uzyskać dostępu przez www.mydomain.com ??
bistaumanga
4
Część, której nie mogłam rozgryźć za pomocą dokumentów GitHub, to jakiego adresu URL użyć w projekcie. Dzięki za odpowiedź: „to jest nazwa użytkownika, a nie nazwa projektu”. więc użyjyourUserName.github.io.
pkamb
1
Zaktualizowałem to rozwiązanie i naprawdę polecam to zrobić. Możesz sprawić, by działał na inne sposoby, na przykład używając CNAME dla @ hosta, ale spowoduje to uszkodzenie poczty e-mail itp. To najlepsze rozwiązanie, jakie znalazłem. Dziękuję Ci.
Steven L.,
1
Dziękuję Ci! Utknąłem na poprawnej wartości rekordu CNAME w DNS - po prostu organizacja.github.io, bez względu na projekt w tej organizacji, który próbujesz obsłużyć. (tj. NIE organizacja.github.io/repo)
Libby
21

Jeśli zastanawiasz się, jak sprawić, aby Twoja domena była wyświetlana jako www.mydomain.comzamiast przekierowywać wwwżądanie do mydomain.com, spróbuj tego:

Plik CNAME w gałęzi gh-pages będzie miał jedną linię:

www.mydomain.com(zamiast mydomain.com)

Bez względu na preferencje dotyczące przekierowywania (innymi słowy, bez względu na to, co znajduje się w pliku CNAME w oddziale gs-pages), u usługodawcy DNS należy skonfigurować go w następujący sposób:

A      @    192.30.252.154
A      @    192.30.252.153
CNAME  www  username.github.io
Phil
źródło
@zwacky dlaczego nie mogę po prostu wskazać CNAME na @? dlaczego „www.moja_domena.com” i „moja_domena.com” powinna się odnosić do potencjalnie różnych adresów IP?
aaa90210
19

Krótka odpowiedź

Te szczegółowe wyjaśnienia są świetne, ale zamieszanie OP (i moje) można rozwiązać jednym zdaniem: „Skieruj DNS na nazwę użytkownika lub organizację GitHub , ignorując konkretny projekt i dodaj odpowiednie pliki CNAME do repozytoriów projektów: GitHub wyśle właściwy DNS do właściwego projektu na podstawie plików w repozytorium.

Jim Pivarski
źródło
1
Nie mam pojęcia, co oznacza „wysyłanie DNS”.
ceving
Przekieruj zapytania DNS, aby żądania HTTP z konkretnymi nazwami domen otrzymały odpowiednie dokumenty jako odpowiedzi.
Jim Pivarski
13

Według stanu na 29 sierpnia 2013 r . Dokumentacja Github twierdzi, że:

Ostrzeżenie: podstrony stron projektu, takie jak http://username.github.io/projectname , nie zostaną przekierowane do niestandardowej domeny projektu.

Amio
źródło
3
Jestem zdezorientowany, dlaczego dodali to zachowanie. Chcę, aby mój .com wskazywał na strony github, a nie na odwrót.
Jordan Scales
9
Byłem też bardzo zdezorientowany. Jak rozumiem, nadal możesz wskazać twoją stronę.com na strony github, ale twoja nazwa_użytkownika.github.io/twojastrona nie przekieruje na twoją stronę.com. W porządku, ponieważ twoja witryna.com nadal będzie działać, po prostu zaktualizuj rekordy DNS i poczekaj na rozwiązanie. help.github.com/articles/…
eddywashere
Powinno to mieć konsekwencje dla SEO (Search Engine Optimization) dla witryny. Mówi się, że Google obniża ranking wyników treści, które są dostępne z wielu domen, co jest jednym z kilku powodów stosowania 301 („stałych”) przekierowań z username.github.io/projectnamedo www.projectname.com.
Borromean Nie
3

W dzisiejszych czasach jest o wiele łatwiej!

  1. Zaktualizuj rekord domeny Apex (@), aby wskazywał

192.30.252.154

192.30.252.153

  1. Edytuj pole domeny Custome w ustawieniach repozytorium github.

enter image description here

  1. www i inne subdomeny można zaktualizować jako CNAME do domeny wierzchołkowej.
Rafaf Tahsin
źródło
2

Właśnie odkryłem, po odrobinie frustracji, że jeśli używasz PairNIC , wszystko, co musisz zrobić, to włączyć ustawienie „Web Forwarding” w „Custom DNS” i podać nazwę użytkownika.github.io/ project automatycznie skonfigurujemy dla Ciebie zarówno wierzchołek, jak i rekordy poddomeny. Wydaje się, że robi dokładnie to, co sugeruje zaakceptowana odpowiedź. Jednak nie pozwoli ci to zrobić dokładnie przez ręczne dodawanie rekordów. Bardzo dziwny. W każdym razie zajęło mi to trochę czasu, więc pomyślałem, że podzielę się, aby ocalić wszystkim innym kłopoty.

Brandon Fosdick
źródło
0

Chciałbym podzielić się moimi krokami, co nieco różni się od tego, co oferują rynop i superluminaria .

  • bo ARecord jest dokładnie taki sam, ale
  • zamiast tworzyć CNAMEdla wwwwolałbym przekierować go do mojej pustej domeny ( non-www)

Ta konfiguracja odnosi się do wskazówek preferowanej domeny . Ustawienie domeny wwwna non wwwlub odwrotnie może być różne dla każdego dostawcy domeny. Ponieważ moja domena jest pod GoDaddy, więc w ustawieniach domeny ustawiłem ją za pomocą przekazywania subdomen (301).

W wyniku skierowania domeny do repozytorium Github poda wszystkie adresy URL dla obu gałęzi masteri gh-pagespodobne, takie jak te wymienione poniżej, przechodzą do preferowanej domeny:

mistrz

Tworząc CNAMEplik w masteroddziale (sprawdź go w moim repozytorium użytkowników ).

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

strony gh

Tworząc ten sam CNAMEplik w gh-pagesoddziale (sprawdź go w moim repozytorium projektów ).

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

Oprócz CNAMEpowyższego pliku może być konieczne całkowite pominięcie przetwarzania Jekyll na stronach GitHub przez utworzenie pliku o nazwie .nojekyllw katalogu głównym repozytorium stron.

Chetabahana
źródło
3
Polecam nie używać GoDaddy, ale tylko osobista opinia
MMachinegun