使用 Cloudflare 访问带有通配符记录子域的 AWS S3
Use Cloudflare to access AWS S3 with wildcard record subdomain
我正在尝试按照 this article on cloudflare 了解如何通过子域获取 Amazon S3 资产。
当我使用 DNS 手动定义特定子域时,它按预期工作,如下所示:
CNAME ----- assets ------ 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 --- 灰色云图标
请注意,我不允许使用 "orange cloud icon"(代理),我不得不使用灰色的(仅限 DNS)
现在 URL 按预期停止工作:
https://assets.example.com
我收到 aws 错误:
404 Not Found
- Code: NoSuchBucket
- Message: The specified bucket does not exist
怎么回事?
我该如何解决这个问题?
注意非通配符 CNAME 记录如何在右侧有一个橙色的云图标并显示 "Proxied"。这意味着对此主机名的请求首先由 Cloudflare 处理,包括例如运行 Cloudflare Workers 重写 URL.
不过,您的通配符主机名显示为 "DNS only"。这意味着主机名被设置为直接指向 AWS 的 IP 地址;请求不会首先转到 Cloudflare。 AWS 不希望收到对您的主机名的请求,因此它 returns 看到它们时会出现 404 错误。
不幸的是,Cloudflare 仅支持代理企业帐户的通配符主机名,因此您对此无能为力,除非您想升级到企业合同,该合同的起价通常为每月几千美元左右。
我正在尝试按照 this article on cloudflare 了解如何通过子域获取 Amazon S3 资产。
当我使用 DNS 手动定义特定子域时,它按预期工作,如下所示:
CNAME ----- assets ------ 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 --- 灰色云图标
请注意,我不允许使用 "orange cloud icon"(代理),我不得不使用灰色的(仅限 DNS)
现在 URL 按预期停止工作: https://assets.example.com
我收到 aws 错误:
404 Not Found
- Code: NoSuchBucket
- Message: The specified bucket does not exist
怎么回事?
我该如何解决这个问题?
注意非通配符 CNAME 记录如何在右侧有一个橙色的云图标并显示 "Proxied"。这意味着对此主机名的请求首先由 Cloudflare 处理,包括例如运行 Cloudflare Workers 重写 URL.
不过,您的通配符主机名显示为 "DNS only"。这意味着主机名被设置为直接指向 AWS 的 IP 地址;请求不会首先转到 Cloudflare。 AWS 不希望收到对您的主机名的请求,因此它 returns 看到它们时会出现 404 错误。
不幸的是,Cloudflare 仅支持代理企业帐户的通配符主机名,因此您对此无能为力,除非您想升级到企业合同,该合同的起价通常为每月几千美元左右。