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.

39
demandé sur Jay Zelenkov 2014-04-30 01:15:31

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 contient example.com mais www.example.com est demandé.

la même chose est valable si votre fichier CNAME contient www.example.com mais l'en-tête Host dans la requête HTTP contient example.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

94
répondu Jay Zelenkov 2017-04-13 12:13:38