Comment configurer un fournisseur de services DNS de manière à ce que les demandes www.example.com
à la fois à www.example.com
et à example.com
afficheraient un site Web hébergé sur le serveur GitHub Pages? La barre d’adresse de mon navigateur doit contenir example.com
lorsque le site est ouvert.
Mon fournisseur de service DNS Il ne prend pas en charge le type d’enregistrement DNS ALIAS
.
Etape 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 (avec le préfixe @) de type A
de votre configuration DNS.
2.2: Supprimer un CNAME
pour le domaine de deuxième niveau www
s’il est présent.
Étape 3: Ajoutez ces 3 entrées au sumt de votre configuration DNS:
@ A 192.30.252.153 @ A 192.30.252.154 www CNAME your_github_username.github.io.
Remplacez votre nom d’utilisateur_github par votre nom d’utilisateur GitHub actuel.
É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.
Ce problème a deux aspects. L’un est la configuration DNS elle-même. Un autre est la façon dont GitHub Pages transfère les requêtes HTTP.
Nous devons connaître quelques points pour comprendre ce que GitHub essaie de dire dans sa documentation.
Il existe deux types d’enregistrements DNS qui nous intéressent: CNAME
et A
A
est également appelé Apex
ou parfois comme root entry
. Il transmet les demandes à une adresse IP fixe spécifiée. CNAME
entrée CNAME
transfère les demandes à une URL spécifiée (URL de texte brut valide, pas une adresse IP).
GitHub possède une adresse URL centrale qui accepte toutes les requêtes 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 GitHub Pages est une collection simple de fichiers HTML
, CSS
et JS
. GitHub dissortingbue ces fichiers sur différents serveurs à travers le monde. Ainsi, lorsque votre navigateur envoie une demande depuis l’Europe, il reçoit des données d’un serveur en Europe. La même chose est valable pour les demandes de l’Asie et des États-Unis.
Etant donné que les enregistrements A
dans DNS doivent contenir des adresses IP et qu’ils doivent être 192.30.252.153
ou 192.30.252.154
, il est impossible de transférer les requêtes vers un serveur situé en Europe ou en Asie. Votre site Web hébergé sur GitHub Pages sera téléchargé depuis un serveur central GitHub Pages. Il existe un risque mineur que si les deux serveurs DNS GitHub Pages ( xxx153
et xxx154
) sont désactivés pour une raison quelconque, tous les domaines personnalisés utilisant des adresses IP GitHub fixes ne seront pas accessibles (leurs requêtes DNS ne pourront pas être résolues).
C’est pourquoi GitHub suggère fortement d’utiliser un domaine de second niveau pour vos pages GitHub (par exemple, blog.example.com
) ou d’utiliser un fournisseur de services DNS prenant en charge un type d’enregistrement ALIAS
faisant office d’enregistrement, mais transmettant une requête à une adresse URL. (par exemple, username.github.io
) au lieu d’une adresse IP fixe.
Après une requête DNS pour your_github_username.github.io.
est résolu en une adresse IP, par exemple 192.30.252.153
votre navigateur envoie une requête HTTP à ce serveur avec un Host
tête HTTP. Vous trouverez ci-dessous des exemples de curl
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 Web utiliser.
Le serveur GitHub Pages redirige automatiquement la requête HTTP vers le domaine de premier niveau si votre fichier
CNAME
contientexample.com
mais quewww.example.com
est demandé.Il en va de même si votre fichier
CNAME
contientwww.example.com
mais que l’en-têteHost
de la requête HTTP contientexample.com
.
CNAME
qui accepte une requête de niveau supérieur ( @
) à ma configuration DNS? Citation de la documentation GitHub Pages:
Attention : Ne créez pas d’enregistrement CNAME pour votre domaine apex personnalisé! Cela pourrait entraîner des problèmes avec d’autres services, tels que le courrier électronique, sur ce domaine.
Configurer un domaine personnalisé avec GitHub Pages
Mon domaine personnalisé ne fonctionne pas
Impossible d’accéder à mon site Web GitHub Pages par adresse IP