Sous-domaine générique (* .example.com) avec Amazon Route53 DNS et S3


12

J'héberge un site Web statique utilisant Amazon Route53 pour DNS et S3 pour les fichiers html. Cela fonctionne bien.

La configuration actuelle est:

example.com.  A   ALIAS s3-website-us-east-1.amazonaws.com. 
www.example.com. CNAME www.example.com.s3-website-us-east-1.amazonaws.com

(REMARQUE: example.com et www.example.com sont des compartiments S3. Mes fichiers HTML résident dans le compartiment example.com.)

Maintenant, je veux ajouter un sous-domaine générique comme celui-ci - c'est ce que j'ai essayé:

*.example.com. CNAME  www.example.com.s3-website-us-east-1.amazonaws.com

L'idée est d'avoir n'importe quoi.exemple.com pour résoudre correctement le site Web. Mais cela ne semble pas fonctionner. Donc, quand je vais sur le site Web: joker.example.com, je vois un message d'erreur sur le navigateur:

Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: joker.example.com

Réponses:


10

La réponse @ edvinas.me est correcte. Vous devez créer une distribution cloudfront pour votre compartiment.

Lorsque vous créez la distribution cloudfront, définissez l'option Noms de domaine alternatifs sur * .example.com.

Utilisez ensuite l'url cloudfront comme d3lt3rsz2leycm.cloudfront.net.

Vous pouvez maintenant ajouter un sous-domaine générique comme celui-ci:

*.example.com. CNAME  3lt3rsz2leycm.cloudfront.net.    

Et devrait fonctionner.


1

Amazon S3 utilise le nom d'hôte pour déterminer le nom du compartiment.

- http://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html

Le nom d'hôte est la minuscule de la valeur envoyée par le navigateur dans l'en- Host:tête. Il n'y a aucun moyen de configurer un compartiment pour répondre à plusieurs noms d'hôte.

Il existe des moyens détournés pour y parvenir, selon ce que vous essayez de faire, mais cela va nécessiter une instance EC2 exécutant HAProxy, Varnish, Apache, ou quelque chose de similaire, pour répondre aux demandes des noms d'hôte génériques avec une redirection vers réécrivez la barre d'adresse du navigateur sur le véritable nom d'hôte / nom de compartiment ou pour munir les en-têtes de demande et proxy la demande à S3, ce qui n'est pas aussi inefficace que cela puisse paraître, car il n'y a pas de frais de transfert de données entre S3 et EC2 dans le même et la latence est faible.


1

Votre compartiment S3 est configuré pour accepter uniquement les demandes de example.com (et / ou www.example.com). Vous ne pouvez pas configurer votre compartiment pour accepter ou tout sous-domaine spécifique que vous souhaitez activer.

La seule façon d'y parvenir est d'utiliser un service externe comme Cloudfront http://aws.amazon.com/cloudfront/ qui procurera les requêtes.

La réponse de Michael (sqlbot) semble couvrir cela plus en détail.


3
Comment faire - EST la question elle-même.
Jasper

Comme la configuration n'est pas prise en charge, vous devez utiliser un service externe pour cela.
phoops
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.