我已将静态文件上传到S3。为了将我的文件缓存到CDN(并降低AWS成本+更好的SEO结果),我使用的是cloudflare。
我的存储桶名称为cdn.mydomainname.com
我的Cloudflare CNAME配置为cdn (name)
和cdn.mydomainname.com.region_code.s3.amazonaws.com(alias)
但是,有一个问题。每当浏览网页时,由于https
指出Your connection is not private
的错误而导致静态文件无法加载。接受后,我的图像网址cdn.mydomainname.com/image.jpeg
被重定向到https://region_code.amazonaws.com/cdn-mydomainname-com/image.jpeg
。现在,当我检查网络日志时,Cloudflare不会缓存该图像,正如我在下面的响应标题中所见。
Server: AmazonS3
x-amz-id-2: some_id
x-amz-request-id: some_id
我已经阅读了多个博客,SO问题和文档,但是找不到解决方案。
有些人建议不要将存储区名称用作cdn.mydomainname.com
。而是使用类似cdn-mydomainname-com
的东西。
现在,我的Cloudflare CNAME配置为cdn (name)
和cdn-mydomainname-com.region_code.s3.amazonaws.com(alias)
它有2个问题。
1)我的网址不会很漂亮(https://region_code.amazonaws.com/cdn-mydomainname-com/image.jpeg)。这会对我的SEO产生负面影响。
2)它再次显示了与前面所示相同的响应标头。
Server: AmazonS3
x-amz-id-2: some_id
x-amz-request-id: some_id
可以采取什么措施来遏制这种情况?我在哪里错
更新
我试图在服务器上托管一个静态文件,并且该文件由Cloudflare提供,如响应头(CF-CACHE-STATUS:HIT)中所述
答案 0 :(得分:0)
尝试将CloudFlare的CNAME指向
cdn-mydomainname-com.region_code.s3.amazonaws.com
,但将您的存储桶名称保留为
cdn.mydomainname.com
并访问
cdn.mydomainname.com/myimage
S3将在查找存储桶时使用CloudFlare发送的主机名,而不是子域。实际上,您可以将任何子域放入所需的CloudFlare中。重要的是子域中没有点。 S3提交给CloudFlare的证书是形式为通配符的证书
*.region_code.s3.amazonasw.com
因此CloudFlare将接受它对
有效cdn-mydomainname-com.region_code.s3.amazonaws.com
,图像将根据需要通过CloudFlare。