127 votes

Comment surmonter les restrictions CNAME du domaine racine?

Nous organisons de nombreuses applications web pour nos clients. Comme il est évident qu'ils veulent utiliser leurs propres domaines, de faire référence à ces applications, généralement ils veulent que tout utilisateur que soit le type de http://www.customer1.com ou http://customer1.com va à leur application web.

La situation dans laquelle nous sommes confrontés est que nous avons besoin d'avoir la possibilité de changer les adresses IP dans un avenir proche. Et nous ne voulons pas compter sur le client de faire l'enregistrement de changement dans leurs domaines. Nous avons donc pensé que l'utilisation de CNAME de travail, mais nous trouvons des Cname ne fonctionnera pas pour le domaine racine.

En gros:

customer1.com IN CNAME customer1.mycompanydomain.com //this is invalid as the RFC
www.customer1.com IN CNAME customer1.mycompanydomain.com //this is valid and will work

Nous voulons être en mesure de changer l'adresse IP de customer1.mycompanydomain.com ou à l'enregistrement et à nos clients de suivre ce dossier qui nous ont le contrôle.

dans notre DNS, il ressemblera à:

customer1.mycompanydomain.com IN A 5.5.5.1

des idées?

66voto

La raison de cette question se pose souvent, c'est parce que, comme vous l'avez mentionné, quelque part, en quelque sorte, quelqu'un présumé important a écrit que la RFC états des noms de domaine sans sous-domaine en face d'eux ne sont pas valides. Si vous lisez le RFC soigneusement, cependant, vous verrez que ce n'est pas exactement ce qu'il dit. En fait:

http://www.rfc-editor.org/rfc/rfc1912.txt

membres:

"Ne pas aller dessus avec des Cname. Les utiliser lors du renommage d'hôtes, mais un plan pour se débarrasser d'eux (et d'informer vos utilisateurs)."

Certains hôtes DNS de fournir un moyen d'obtenir CNAME les fonctionnalités au niveau de la zone de l'apex (la racine au niveau du domaine, pour le nu nom de domaine) à l'aide d'un type d'enregistrement personnalisé. Ces documents incluent, par exemple:

ALIAS DNSimple, ANOM au DNS Facile, ANOM à easyDNS, CNAME à CloudFlare,

Pour chaque fournisseur, la configuration est similaire: point de l'ALIAS ou ANOM entrée pour votre apex domaine de example.domain.com, comme vous le feriez avec un enregistrement CNAME. Selon le fournisseur de DNS, un vide ou @ Nom de la valeur identifie la zone apex.

ALIAS ou ANOM ou @ example.domain.com.

Si votre fournisseur de DNS ne prend pas en charge ce dossier-type, et vous êtes incapables de changer pour un qui le fait, vous aurez besoin d'utiliser un sous-domaine de redirection, ce qui n'est pas difficile, selon le protocole ou le logiciel serveur qui a besoin de le faire.

Je suis fortement d'accord avec l'affirmation que c'est fait uniquement par des "amateurs" administrateurs ou de telles idées. C'est un simple "Quel est le nom et son service doit-il faire?" traiter, puis de les adapter à vos DNS config pour servir ceux qui le souhaite; Si votre principale services web et de l'e-mail, je ne vois aucune raison VALABLE pourquoi supprimer le Cname pour-bonne serait problématique. Après tout, qui préfèrent @subdomain.domain.org sur @domain.org ? Qui a besoin de "www" si vous êtes déjà ensemble avec le protocole lui-même? Il est illogique de supposer que l'utilisation d'une racine-nom de domaine serait invalide. http://no-www.org/

3voto

Gwerks Points 19

Vous devez mettre un point à la fin du domaine externe afin qu'il ne pense pas que vous voulez dire client1.masocietedomaine.com.localdomaine;

Alors changez simplement:

 customer1.com IN CNAME customer1.mycompanydomain.com
 

À

 customer1.com IN CNAME customer1.mycompanydomain.com.
 

3voto

MrEvil Points 1046

Sipwiz est exact, la seule façon de le faire correctement est le HTTP et DNS approche hybride. Mon agent est une re-vendeur pour Tucows et ils offrent domaine racine de la redirection de gratuitement un service à valeur ajoutée.

Si votre domaine est blah.com ils vont vous demander où vous souhaitez que le domaine transmis, et que vous tapez dans www.blah.com. Ils attribuent l'enregistrement de leur serveur apache et automatiquement ajouter blah.com DNS serveur virtuel. Le serveur virtuel qui répond avec un HTTP 302 erreur de le rediriger vers la bonne URL. Il est simple de script d'installation/et peuvent être manipulés par des bas de gamme serait autrement être mis au rebut de matériel.

Exécutez la commande suivante pour un exemple: curl-v eclecticengineers.com

-8voto

Geo Points 3011

Grâce à deux sipwiz et MrEvil. Nous avons développé un script PHP qui va analyser les URL que l'utilisateur entre et collez www au-dessus de lui. (par exemple, si le client entre dans kiragiannis.compuis il va rediriger vers www.kiragiannis.com). Donc, notre client en point de leur racine (par exemple, customer1.com de A dossier où notre web redirecteur) et ensuite, www CNAME pour le réel A dossier géré par nous.

Ci-dessous le code dans le cas où vous êtes intéressé à l'avenir de nous.

<?php
$url = strtolower($_SERVER["HTTP_HOST"]);

if(strpos($url, "//") !== false) { // remove http://
  $url = substr($url, strpos($url, "//") + 2);
}

$urlPagePath = "";
if(strpos($url, "/") !== false) { // store post-domain page path to append later
  $urlPagePath = substr($url, strpos($url, "/"));
  $url = substr($url, 0, strpos($url,"/"));
}


$urlLast = substr($url, strrpos($url, "."));
$url = substr($url, 0, strrpos($url, "."));


if(strpos($url, ".") !== false) { // get rid of subdomain(s)
  $url = substr($url, strrpos($url, ".") + 1);
}


$url = "http://www." . $url . $urlLast . $urlPagePath;

header( "Location:{$url}");
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X