Amazon S3 似乎阻止了 cloudflare IP 地址。我如何解决它?

JSt*_*ark 8 amazon-s3 cname-record cdn ip-blocking cloudflare

我有 Cloudflare 提供的静态内容。Cloudflare 指向 Amazon S3 以获取静态内容并通过 CNAME (cdn.mydomain.com) 为其提供服务。存储桶设置正确并且一切正常,直到周五我开始在浏览器中收到请求超时。我确认内容仍然可以通过 S3 访问,并使用 Cloudflare 开了一张票。Cloudflare 报告说,“亚马逊确实出现了一些可能阻止来自我们 IP 的请求”,并且他们在日志中看到了以下消息:

upstream timed out (110: Connection timed out) while reading response header from upstream cdn.mydomain.com 
upstream prematurely closed connection while reading response header from upstream cdn.mydomain.com 
Run Code Online (Sandbox Code Playgroud)

这是我的 CORS 文件中已有的内容。

<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
Run Code Online (Sandbox Code Playgroud)

我应该在 AllowedHeader 中放一个 * 吗?我是否需要明确命名 Cloudflare IP 地址?我错过了什么来避免阻塞?

dan*_*aur -2

您是否有任何原因不使用 S3 存储桶支持的 Amazon CloudFront发行版来提供静态内容?应该比 CloudFlare -> S3 更高效,并且如果 Amazon 确实阻止 CloudFlare 访问 S3(尽管这并没有说明他们为什么要这样做),那么这对您来说将不再是问题。

您还可以将您的 cdn.mydomain.com 主机名 CNAME 为 [distribution_id].cloudfront.net,以保留您的 URL 方案并使转换对您的用户透明。CloudFront 的运行方式与 CloudFlare 非常相似,它们的 IP 地址通过 BGP 路由到全球最近的位置,但 Amazon 内部将拥有更高效的 CloudFront -> S3 获取系统。

据我所知,S3 和 CloudFront 之间的传输是免费的,因此您无需为带宽支付更多费用(如果有的话)。

  • S3 和 CloudFront 之间的传输是免费的,但使用 CloudFront 需要支付额外费用。CloudFlare 可免费使用且覆盖范围更广。 (3认同)