带有 Amazon Route53 DNS 和 S3 的通配符子域 (*.example.com)

Jas*_*per 12 domain-name-system amazon-s3 amazon-route53

我正在托管一个静态网站,使用 Amazon Route53 作为 DNS 和 S3 作为 html 文件。它工作正常。

当前设置是:

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
Run Code Online (Sandbox Code Playgroud)

(注意:example.com 和 www.example.com 是 S3 存储桶。我的 HTML 文件驻留在 example.com 存储桶中。)

现在我想添加一个像这样的通配符子域 - 这是我尝试过的:

*.example.com. CNAME  www.example.com.s3-website-us-east-1.amazonaws.com
Run Code Online (Sandbox Code Playgroud)

这个想法是让anything.example.com 正确解析到网站。但这似乎不起作用。因此,当我访问网站时:joker.example.com 我在浏览器上看到错误消息:

Code: NoSuchBucket
Message: The specified bucket does not exist
BucketName: joker.example.com
Run Code Online (Sandbox Code Playgroud)

小智 10

@edvinas.me 的答案是正确的。您必须为您的存储桶创建一个 Cloudfront 分配。

创建 cloudfront 分配时,将备用域名选项设置为 *.example.com。

然后使用像 d3lt3rsz2leycm.cloudfront.net 这样的 cloudfront 网址。

现在您可以像这样添加通配符子域:

*.example.com. CNAME  3lt3rsz2leycm.cloudfront.net.    
Run Code Online (Sandbox Code Playgroud)

并且应该工作。


pho*_*ops 1

您的 S3 存储桶配置为仅接受 example.com(和/或 www.example.com)的请求。您无法将存储桶配置为接受您想要激活的任何特定子域。

完成此操作的唯一方法是使用 Cloudfront http://aws.amazon.com/cloudfront/等外部服务来代理请求。

Michael (sqlbot) 的回复似乎更详细地介绍了这一点。

  • 如何做到这一点——这就是问题本身。 (4认同)