Comment configurer les Pages Github pour rediriger les requêtes DNS du sous-domaine (par exemple www) vers le domaine de premier niveau (TLD, enregistrement Apex)?
comment configurer un fournisseur de services DNS de telle manière que les requêtes à la fois www.example.com
et example.com
montrent un site Web hébergé sur le serveur de Pages GitHub? La barre d'adresse de mon navigateur doit contenir example.com
lorsque le site est ouvert.
mon fournisseur de services DNS est gandi.net
. Il ne supporte pas le type d'enregistrement ALIAS
DNS.
1 réponses
réponse Courte
Étape 1: Ajouter un nouveau fichier CNAME
à votre référentiel de Pages GitHub contenant une seule ligne: votre nom de domaine de premier niveau.
par exemple:
example.com
Étape 2: [optionnel] mais fortement recommandé
2.1: supprimer tous les autres enregistrements de niveau supérieur (préfixés par@) de type A
de votre configuration DNS.
2.2: supprimer un enregistrement CNAME
pour le domaine de deuxième niveau www
s'il est présent.
Étape 3: ajoutez ces 3 entrées au tout début 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
par votre nom d'utilisateur GitHub actuel.
Étape 4: Attendez que vos modifications DNS se propagent.
changements DNS ne sont pas efficaces immédiatement. Ils peuvent prendre jusqu'à une journée complète pour se propager.
longue réponse
Cette question a deux côtés. La première est la configuration DNS elle-même. Une autre est la façon dont GitHub Pages transmet les requêtes HTTP.
nous avons besoin de savoir quelques choses pour comprendre ce que GitHub essaie de dire dans leur documentation.
DNS Entry Types
Il existe deux types de notices DNS qui nous intéressent: CNAME
et A
.
A
est aussi appelé Apex
ou parfois root entry
. Il transmet les requêtes à une adresse IP spécifiée fixe . L'entrée CNAME
transmet les requêtes à une URL spécifiée (URL de texte en clair valide, pas une adresse IP).
équilibrage de Charge DNS
GitHub a une adresse URL centrale qui accepte toutes les requêtes DNS pour les Pages GitHub: http://username.github.io
. Cette URL est résolu à différentes adresses IP en fonction de votre localisation géographique. Le site Web hébergé sur GitHub Pages est une simple collection de fichiers HTML
, CSS
et JS
. GitHub distribue ces fichiers à différents serveurs à travers le monde. Ainsi, lorsque votre navigateur envoie une demande de L'Europe, il reçoit des données d'un serveur en Europe. Il en va de même pour les demandes de L'Asie et des États-Unis.
Ce que GitHub est en train de dire
depuis A
les enregistrements dans le DNS doivent contenir des adresses IP, et ils doivent être soit 192.30.252.153
ou 192.30.252.154
, il n'y a aucun moyen de transmettre des requêtes à 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 ya un risque mineur que si les deux GitHub Pages serveurs DNS ( x.x.x.153
et x.x.x.154
) sera en baisse pour pour une raison quelconque, tous les domaines personnalisés qui utilisent des adresses IP de Pages GitHub fixes ne seront pas accessibles (leurs requêtes DNS ne seront pas résolubles).
C'est pourquoi GitHub suggère fortement d'utiliser un domaine de deuxième niveau pour vos Pages GitHub (par exemple blog.example.com
) ou d'utiliser un fournisseur de services DNS qui supporte 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.
comment GitHub Pages traite les requêtes HTTP
après qu'une requête DNS pour your_github_username.github.io.
est résolue en une adresse IP, par exemple 192.30.252.153
votre navigateur envoie une requête HTTP à ce serveur avec un en-tête HTTP Host
. Ci-dessous sont des exemples curl
qui chargent le même site web (ces exemples pourraient ne pas fonctionner si vous êtes derrière un serveur mandataire) :
$> 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/
par ici les serveurs de GitHub Pages savent quel site Utilisateur servir.
le serveur de Pages GitHub redirigera automatiquement la requête HTTP vers le domaine de premier niveau si votre fichier
CNAME
contientexample.com
maiswww.example.com
est demandé.la même chose est valable si votre fichier
CNAME
contientwww.example.com
mais l'en-têteHost
dans la requête HTTP contientexample.com
.
pourquoi ne puis-je pas ajouter un CNAME
enregistrement qui accepte une requête de haut niveau ( @
) pour ma configuration DNS?
citation de la documentation GitHub Pages:
Warning : ne créez pas D'enregistrement CNAME pour votre domaine Apex personnalisé! Cela peut causer des problèmes avec d'autres services, comme le courriel, sur ce domaine.
, les Références:
mise en place d'un domaine personnalisé avec des Pages GitHub
mon domaine personnalisé ne fonctionne pas
ne peut pas accéder à mes Pages GitHub site web par adresse IP