Comment configurer un fournisseur de services DNS de telle manière que les demandes aux deux www.example.com
et example.com
afficherait un site Web hébergé sur les pages GitHub? La barre d'adresse de mon navigateur doit contenir example.com
à l'ouverture du site.
Mon fournisseur de services DNS est gandi.net
. Il ne prend pas en charge le type d'enregistrement DNS ALIAS
.
Étape 1: Ajoutez un nouveau fichier CNAME
à votre référentiel GitHub Pages contenant une seule ligne: votre nom de domaine de premier niveau.
Par exemple.:
example.com
Étape 2: [Facultatif] mais fortement recommandé
2.1: Supprimez tous les autres enregistrements de niveau supérieur (préfixés par @) de type A
de votre configuration DNS.
2.2: Supprimez un enregistrement CNAME
pour le domaine de second niveau www
s'il est présent.
Étape 3: Ajoutez ces 3 entrées tout en haut de votre configuration DNS:
@ A 192.30.252.153
@ A 192.30.252.154
www CNAME your_github_username.github.io.
Remplacer your_github_username
avec votre nom d'utilisateur GitHub réel.
Étape 4: Attendez que vos modifications DNS se propagent.
Les modifications DNS ne sont pas effectives immédiatement. Ils peuvent prendre jusqu'à une journée complète pour se propager.
Cette question a deux côtés. L'un est la configuration DNS elle-même. Un autre est la façon dont GitHub Pages transmet les requêtes HTTP.
Nous devons savoir quelques choses pour comprendre ce que GitHub essaie de dire dans leur documentation.
Il existe deux types d'enregistrements DNS qui nous intéressent: CNAME
et A
.
A
est également appelé Apex
ou parfois root entry
. Il transmet les requêtes à une adresse IP fixe fixe . CNAME
entrée transmet les demandes à une URL spécifiée (URL en texte brut valide réelle, pas une adresse IP).
GitHub possède une adresse URL centrale qui accepte toutes les demandes DNS pour les pages GitHub: http://username.github.io
. Cette URL est résolue en différentes adresses IP en fonction de votre emplacement géographique. Le site Web hébergé sur les pages GitHub est une simple collection de fichiers HTML
, CSS
et JS
. GitHub distribue ces fichiers sur différents serveurs à travers le monde. De sorte que lorsque votre navigateur envoie une demande depuis l'Europe, il reçoit des données d'un serveur en Europe. Il en va de même pour les demandes d'Asie et des États-Unis.
Étant donné que les enregistrements A
dans DNS doivent contenir des adresses IP, et ils doivent être 192.30.252.153
ou 192.30.252.154
, il n'existe aucun moyen de transférer les demandes vers un serveur situé quelque part en Europe ou en Asie. Votre site Web hébergé sur GitHub Pages sera téléchargé à partir d'un serveur central GitHub Pages. Il existe un risque mineur que si les deux serveurs DNS GitHub Pages (x.x.x.153
et x.x.x.154
) sera désactivé pour une raison quelconque, tous les domaines personnalisés qui utilisent des adresses IP fixes GitHub Pages ne seront pas accessibles (leurs requêtes DNS ne seront pas résolvables).
C'est pourquoi GitHub suggère fortement d'utiliser un domaine de second niveau pour vos pages GitHub (par exemple blog.example.com
) ou utilisez un fournisseur de services DNS qui prend en charge un type d'enregistrement ALIAS
qui agit comme A
enregistrement mais transmet la demande à une adresse URL (par exemple username.github.io
) au lieu d'une adresse IP fixe.
Après une demande DNS pour your_github_username.github.io.
est résolu en une adresse IP, par exemple 192.30.252.153
votre navigateur envoie une demande HTTP à ce serveur avec un en-tête HTTP Host
. Vous trouverez ci-dessous curl
exemples qui chargent le même site Web (ces exemples peuvent ne pas fonctionner si vous êtes derrière un serveur proxy):
$> curl --header "Host: your_github_username.github.io" http://192.30.252.153/
$> curl --header "Host: www.example.com" http://192.30.252.153/
$> curl --header "Host: example.com" http://192.30.252.153/
De cette façon, les serveurs GitHub Pages savent quel site utilisateur utiliser.
Le serveur GitHub Pages redirigera automatiquement la requête HTTP vers le domaine de premier niveau si votre fichier
CNAME
contientexample.com
maiswww.example.com
Est demandé.Il en va de même si votre fichier
CNAME
contientwww.example.com
mais l'en-têteHost
dans la requête HTTP contientexample.com
.
CNAME
qui accepte une demande de niveau supérieur (@
) à ma configuration DNS?Citation de la documentation des pages GitHub:
Avertissement : Ne créez pas d'enregistrement CNAME pour votre domaine d'apex personnalisé! Cela pourrait entraîner des problèmes avec d'autres services, tels que la messagerie électronique, sur ce domaine.
Configuration d'un domaine personnalisé avec GitHub Pages
Mon domaine personnalisé ne fonctionne pas
Impossible d'accéder à mon site Web GitHub Pages par adresse IP