149 votes

Configurer le transfert d'URL basé sur le DNS dans Amazon Route53

J'essaie de configurer la redirection dans Amazon Route53. Mon dernier service DNS (Nettica) me permettait de router les requêtes vers "aws.example.com" vers "https://myaccount.signin.aws.amazon.com/console/".

Cette fonctionnalité est-elle supportée par Route53 ?

Comment Nettica y parvient-elle ? Insère-t-il un ou plusieurs enregistrements spéciaux A, CNAME, PTR ou TXT ?

0 votes

La création d'une distribution Cloudfront avec l'URL comme origine fonctionne également. Il suffit de faire pointer le domaine vers la distribution Cloudfront depuis Route53 et de s'assurer de configurer correctement les certs TLS.

337voto

Vivek M. Chawla Points 1244

J'ai été en cours d'exécution dans le exact même problème que Saurav décrit, mais j'ai vraiment besoin de trouver une solution qui ne nécessite pas d'autre chose que de la Route 53 et S3. J'ai créé un guide pour mon blog détaillant ce que j'ai fait.

Voici ce que j'ai trouvé.


Objectif

En utilisant uniquement les outils disponibles dans Amazon S3 et Amazon Route 53, de créer une URL de Redirection qui transfère automatiquement http://url-redirect-example.vivekmchawla.com pour la Console AWS page de connexion alias "mon compte", situé à https://myaccount.signin.aws.amazon.com/console/ .

Ce guide va vous apprendre configurer la redirection d'URL vers n'importe quelle URL, pas seulement ceux d'Amazon. Vous apprendrez comment configurer la redirection de dossiers spécifiques (comme "/console" dans mon exemple), et comment faire pour modifier le protocole de la redirection HTTP vers HTTPS (ou vice versa).


Première Étape: Créer Votre Compartiment S3

Open the S3 Management Console and click "Create Bucket"

Ouvrez le S3 de la console de gestion et cliquez sur "Créer Seau".


Étape Deux: Le Nom De Votre Compartiment S3

Name your S3 Bucket

  1. Choisir un Nom de Bucket. Cette étape est très importante! Vous devez nommer le seau EXACTEMENT le même que l'URL que vous souhaitez configurer pour l'expédition. Pour ce guide, je vais utiliser le nom de "url-redirect-example.vivekmchawla.com".

  2. Sélectionnez quelle que soit la région qui fonctionne le mieux pour vous. Si vous ne savez pas, conservez la valeur par défaut.

  3. Ne vous inquiétez pas à propos de la configuration de la journalisation. Cliquez simplement sur le bouton "Créer" lorsque vous êtes prêt.


Étape 3: Activer l'Hébergement de Site Statique et de Spécifier des Règles de Routage

Enable Static Website Hosting and Specify Routing Rules

  1. Dans la fenêtre propriétés, ouvrez les paramètres "d'Hébergement de Site Statique".
  2. Sélectionnez l'option "Activer le site d'hébergement".
  3. Entrez une valeur pour l'Indice de "Document". Cet objet (document) ne sera pas servi par S3, et vous ne jamais avoir à le télécharger. Suffit d'utiliser le nom que vous voulez.
  4. Ouvrez les paramètres de "Modifier les Règles de Redirection".
  5. Collez le code XML suivant extrait dans son intégralité.

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

Si vous êtes curieux de savoir ce que le ci-dessus XML est en train de faire, visiter le mémorial australien de la Documentation pour la "Syntaxe pour Spécifier des Règles de Routage". Un bonus technique (non traitées ici) est la redirection vers des pages spécifiques à l'hôte de destination, par exemple http://redirect-destination.com/console/special-page.html. Lisez à propos de la <ReplaceKeyWith> élément si vous avez besoin de cette fonctionnalité.


Étape 4: prenez Note de Votre Redirection du Seau "Endpoint"

Make a note of your Redirect Bucket's Endpoint

Prenez note de l'Hébergement de Site Statique "endpoint" que Amazon créé automatiquement pour ce compartiment. Vous aurez besoin pour plus tard, afin de mettre en évidence l'ensemble de l'URL, puis copier et le coller dans le bloc-notes.

ATTENTION! À ce stade, vous pouvez cliquer sur ce lien pour vérifier si les Règles de Redirection ont été saisis correctement, mais attention! Voici pourquoi...

Disons que vous avez entré le mauvais de la valeur à l'intérieur de l' <Hostname> tags dans vos Règles de Redirection. Peut-être que vous avez accidentellement tapé myaccount.amazon.com, au lieu de myaccount.signin.aws.amazon.com. Si vous cliquez sur le lien pour tester l'URL du point de Terminaison, AWS seront heureux de vous rediriger votre navigateur vers la bonne adresse!

Après avoir remarqué votre erreur, vous devrez probablement modifier l' <Hostname> dans vos Règles de Redirection pour corriger l'erreur. Malheureusement, lorsque vous essayez de cliquer sur le lien encore une fois, vous aurez plus de chances de finir par être redirigé vers la bonne adresse! Même si vous avez fixé l' <Hostname> entrée, votre navigateur est mise en cache de la précédente (mauvaise!) de l'entrée. Cela arrive parce que nous sommes en utilisant un HTTP redirection 301 (permanente), qui les navigateurs comme Chrome et Firefox s'en cache par défaut.

Si vous copiez et collez l'URL du point de Terminaison d'un autre navigateur (ou de vider le cache de votre actuelle), vous aurez une autre chance de voir si la mise à jour des <Hostname> entrée est enfin la bonne.

Pour être sûr, si vous voulez tester votre URL de point de Terminaison et de Rediriger les Règles, vous devez ouvrir une session de navigation privée, comme la "Mode navigation privée" dans Chrome. Copier, coller, et de tester l'URL du point de Terminaison en Mode Incognito et rien en cache disparaîtra une fois que vous fermez la session.


Etape 5: Ouvrez l'Route53 de la Console de Gestion et d'Aller À l'Enregistrement de Votre Zone Hébergée (Nom de Domaine)

Open the Route 53 Management Console to Add Record Sets to your Hosted Zone

  1. Sélectionnez la Zone Hébergée (nom de domaine) que vous avez utilisé lorsque vous avez créé votre seau. Depuis que j'ai nommé mon seau "url-redirect-example.vivekmchawla.com" je vais sélectionner le vivekmchawla.com Zone Hébergée.
  2. Cliquez sur "Aller à l'Enregistrement de la touche"".

Étape 6: Cliquez sur "Créer un Jeu d'enregistrements" Bouton

Click the Create Record Set button

Cliquez sur "Créer un Jeu d'enregistrements" va ouvrir le Créer un Jeu d'enregistrements de la fenêtre sur le côté droit de la Route53 de la Console de Gestion.


Étape 7: Créer un Enregistrement CNAME Ensemble

Create a CNAME Record Set

  1. Dans le champ Nom, entrez le nom d'hôte de la partie de l'URL que vous avez utilisé lorsque vous nommez votre S3 seau. Le "nom d'hôte de partie" de l'URL est tout à GAUCHE de votre Zone Hébergée nom. J'ai appelé mon S3 seau "url-redirect-example.vivekmchawla.com" et ma Zone Hébergée est "vivekmchawla.com", de sorte que le nom d'hôte de la partie j'ai besoin d'entrer est "l'url de redirection-exemple".

  2. Sélectionnez "CNAME - nom Canonique" pour le Type de ce Record.

  3. Pour la Valeur, collez l'URL du point de Terminaison de la S3 seau que nous avons créé à l'Étape 3.

  4. Cliquez sur "Créer un Jeu d'enregistrements de la touche"". S'il n'y a pas d'erreurs, vous allez maintenant être en mesure de voir un nouvel enregistrement CNAME dans votre Zone Hébergée liste des Jeux d'enregistrements.


Étape 8: Tester Votre Nouvelle URL de Redirection

Ouvrir un nouvel onglet dans le navigateur et tapez l'URL que nous venons de mettre en place. Pour moi, c'est http://url-redirect-example.vivekmchawla.com. Si tout a fonctionné correctement, vous devriez être envoyé directement à une AWS page de connexion.

Parce que nous avons utilisé l' myaccount.signin.aws.amazon.com alias que notre rediriger l'URL de destination, Amazon sait exactement ce qui compte, nous essayons d'accès, et nous emmène directement là-bas. Cela peut être très pratique si vous voulez donner une courte, propre, de marque AWS lien de connexion à des employés ou des entrepreneurs.

All done! Your URL forwarding should take you to the AWS sign-in page.


Conclusions

Personnellement, j'aime les différents services AWS, mais si vous avez décidé de migrer de gestion DNS pour Amazon Route 53, le manque de facile redirection d'URL peut être frustrant. J'espère que ce guide a aidé à rendre la configuration de la redirection d'URL pour votre Hébergé Zones un peu plus facile.

Si vous souhaitez en savoir plus, veuillez consulter les pages suivantes de l'AWS site de Documentation.

Cheers!

19 votes

+1 pour cette solution tout à fait intelligente - merci beaucoup d'avoir pris le temps de compiler un guide pas à pas aussi épique, j'ai mis à jour le site. ma réponse de renvoyer les futurs lecteurs à votre site en conséquence !

2 votes

Merci, Steffen ! J'apprécie les commentaires ! C'était ma toute première réponse à StackOverflow. Vous pouvez imaginer à quel point j'ai été surpris qu'après avoir écrit tout cela, je ne pouvais même pas la poster parce que je n'avais pas assez de réputation pour poster une réponse avec plus de deux images ! Hehehe... ahh, des souvenirs :-)

25 votes

Note: : Pour ceux qui veulent des redirections de domaine racine : exemple.org -> exemple.com -- faites tout de la même manière sauf utiliser un enregistrement A avec "Alias : Oui" activé. Ensuite, sélectionnez le seau comme cible.

165voto

Roberto Schneiders Points 1686

Le support AWS a indiqué une solution plus simple. Il s'agit essentiellement de la même idée proposée par @Vivek M. Chawla, avec une mise en œuvre plus simple.

AWS S3 :

  1. Créez un Bucket nommé avec votre domaine complet, par exemple aws.example.com
  2. Sur les propriétés du seau, sélectionnez Redirect all requests to another host name et saisissez votre URL : https://myaccount.signin.aws.amazon.com/console/

AWS Route53 :

  1. Créez un jeu d'enregistrements de type A. Changez l'alias en Yes . Cliquez sur Alias Target et sélectionnez le seau S3 que vous avez créé dans le précédent précédente.

Référence : Comment rediriger des domaines en utilisant Amazon Web Services

Documentation officielle d'AWS : Existe-t-il un moyen de rediriger un domaine vers un autre domaine en utilisant Amazon Route 53 ?

12voto

Vincent Mac Points 303

J'ai pu utiliser nginx pour gérer la redirection 301 vers la page de connexion à aws.

Allez dans votre dossier nginx conf (dans mon cas, c'est /etc/nginx/sites-available dans lequel je crée un lien symbolique vers /etc/nginx/sites-enabled pour les fichiers conf activés).

Ajoutez ensuite un chemin de redirection

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

Si vous utilisez nginx, vous aurez très probablement des blocs de serveurs supplémentaires (virtualhosts dans la terminologie Apache) pour gérer votre zone apex (exemple.com) ou toute autre configuration. Assurez-vous que l'un d'entre eux est défini comme étant votre serveur par défaut.

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

Dans Route 53, ajoutez un A record para aws.example.com et définissez la valeur de la même IP que celle utilisée pour votre apex de zone.

0 votes

Il serait encore mieux d'utiliser un enregistrement Alias pour pointer vers l'équilibreur de charge élastique en face de cette machine.

10voto

Steffen Opel Points 31067

Mise à jour

Bien que ma réponse originale ci-dessous soit toujours valable et qu'elle puisse être utile pour comprendre la raison pour laquelle la redirection d'URL basée sur le DNS n'est pas disponible par l'intermédiaire de l'application Amazon Route 53 je vous recommande vivement de consulter l'ouvrage de Vivek M. Chawla, intitulé une solution indirecte tout à fait intelligente par le biais de l'introduction entre-temps Prise en charge par Amazon S3 des redirections de sites web et obtenir une solution autonome sans serveur et donc gratuite au sein d'AWS uniquement de cette manière.

  • La mise en œuvre d'une solution automatisée pour générer de telles redirections est laissée comme un exercice pour le lecteur, mais veuillez rendre hommage à la réponse épique de Vivek en publiant votre solution ;)

Réponse originale

Nettica doit utiliser une solution de redirection personnalisée pour cela, voici le problème :

Vous pouvez créer un alias CNAME comme aws.example.com para myaccount.signin.aws.amazon.com Cependant, DNS ne fournit pas de support officiel pour aliaser un sous-répertoire tel que console dans cet exemple.

  • Il est dommage qu'AWS ne semble pas simplement faire cela par défaut lorsque l'on frappe le bouton https://myaccount.signin.aws.amazon.com/ (je viens d'essayer), parce que cela résoudrait votre problème immédiatement et aurait beaucoup de sens en premier lieu ; de plus, cela devrait être assez facile à configurer de leur côté.

Pour cette raison, quelques fournisseurs de DNS ont apparemment mis en œuvre une solution personnalisée pour permettre les redirections vers des sous-répertoires ; je me risque à penser qu'ils facilitent essentiellement un alias CNAME pour un domaine qui leur est propre et qu'ils redirigent à nouveau de là vers la destination finale par l'intermédiaire d'une connexion immédiate. Redirection HTTP 3xx .

Pour obtenir le même résultat, il faudrait donc qu'un service HTTP exécute ces redirections, ce qui n'est pas la solution simple que l'on pourrait espérer bien sûr. Peut-être ou heureusement que quelqu'un pourra trouver une approche plus intelligente.

4 votes

Les CNAME sont des alias, et ne redirigent pas.

0 votes

@ejain - vous avez raison bien sûr, j'ai corrigé cela en conséquence (j'ai dû manquer la notification à l'époque) ; merci d'avoir signalé cette formulation potentiellement trompeuse !

1voto

DanV Points 1429

Si vous rencontrez toujours des problèmes avec l'approche simple, créez un seau vide, puis Redirect all requests to another host name sous Hébergement web statique dans les propriétés via la console. Assurez-vous que vous avez défini 2 enregistrements A dans route53, un pour final-destination.com et un pour redirect-to.final-destination.com . Les paramètres de chacun d'entre eux seront identiques, mais le nom sera différent afin qu'il corresponde aux noms que vous avez définis pour vos buckets / URLs.

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