web-dev-qa-db-ja.com

Amazon Route53 DNSおよびS3を使用したワイルドカードサブドメイン(* .example.com)

DNSにはAmazon Route53を、htmlファイルにはS3を使用して静的ウェブサイトをホストしています。正常に動作しています。

現在の設定は:

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

(注:example.comとwww.example.comはS3バケットです。私のHTMLファイルはexample.comバケットにあります。)

今、私はこのようなワイルドカードサブドメインを追加したいと思います-これは私が試したことです:

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

アイデアは、anything.example.comがWebサイトに正しく解決されるようにすることです。しかし、これは機能していないようです。だから私がウェブサイトに行くとき:joker.example.com私はブラウザにエラーメッセージを見ます:

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

@ edvinas.meの答えは正しいです。バケットのcloudfrontディストリビューションを作成する必要があります。

Cloudfrontディストリビューションを作成するときに、代替ドメイン名オプションを* .example.comに設定します。

次に、d3lt3rsz2leycm.cloudfront.netのようなcloudfrontのURLを使用します。

これで、次のようなワイルドカードサブドメインを追加できます。

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

そしてうまくいくはずです。

10
Javier Arnáiz

Amazon S3はホスト名を使用してバケット名を決定します。

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

ホスト名は、ブラウザーがHost:ヘッダーで送信した値の小文字です。複数のホスト名に応答するようにバケットを構成する方法はありません。

何をしようとしているのかに応じて、これを達成するためのいくつかの迂回方法がありますが、リダイレクトでワイルドカードホスト名のリクエストに応答するには、HAProxy、Varnish、Apacheなどを実行するEC2インスタンスが必要になります。ブラウザのアドレスバーを実際のホスト名/バケット名に書き換えるか、リクエストヘッダーを変更してリクエストをS3にプロキシします。これは、S3とEC2間のデータ転送料金が同じではないため、見かけほど効率的ではありません。リージョン、およびレイテンシは低いです。

1

S3バケットは、example.com(またはwww.example.com)へのリクエストのみを受け入れるように設定されています。受け入れるようにバケットを構成したり、アクティブにしたい特定のサブドメインを構成したりすることはできません。

これを達成できる唯一の方法は、リクエストをプロキシするCloudfront http://aws.Amazon.com/cloudfront/ のような外部サービスを使用することです。

Michaelの(sqlbot)応答は、これをより詳細にカバーしているようです。

1
phoops