0

我正在尝试关注这篇关于 cloudflare的文章,了解如何通过子域获取 Amazon S3 资产。

当我使用 DNS 手动定义特定子域时,它按预期工作,如下所示:

CNAME ----- 资产 ------ fullpage.sites.s3-website-us-west-1.amazonaws.com --- 橙色云图标 在此处输入图像描述

然后我可以在使用时访问我的亚马逊文件: https ://assets.example.com

但是,我想使用通配符,以便可以将每个子域重定向到我的 Amazon S3 存储桶内的文件夹。我不想手动定义这些子域,因为这是我的网络用户将在他们的网络应用程序中生成的东西。

因此,我使用通配符 NAME 添加以下记录。CNAME ----- * ------ fullpage.sites.s3-website-us-west-1.amazonaws.com --- 灰色云图标 在此处输入图像描述

请注意,我不允许使用“橙色云图标”(代理),我必须使用灰色图标(仅限 DNS)

现在此 URL 按预期停止工作: https ://assets.example.com

我得到一个aws错误:

404 未找到

  • 代码:NoSuchBucket
  • 消息:指定的存储桶不存在

这是怎么回事?

我该如何解决这个问题?

4

1 回答 1

1

请注意非通配符 CNAME 记录的右侧有一个橙色云图标并显示“已代理”。这意味着对该主机名的请求首先由 Cloudflare 处理,包括例如运行 Cloudflare Workers 来重写 URL。

但是,您的通配符主机名显示“仅 DNS”。这意味着主机名被设置为直接指向 AWS 的 IP 地址;请求不会先发送到 Cloudflare。AWS 不希望收到对您的主机名的请求,因此它在看到它们时会返回 404 错误。

不幸的是,Cloudflare 仅支持代理企业帐户的通配符主机名,因此除非您想升级到通常每月几千美元左右的企业合同,否则您无能为力。

于 2020-03-12T17:37:00.940 回答