Origin Cache-Control无法在AWS Cloudfront上运行

时间:2017-03-09 11:14:16

标签: amazon-web-services caching amazon-cloudfront

我使用AWS Cloudfront提供图像。原始图像标头包括缓存控制设置,但这些标头不会转移到AWS。我检查了AWS文档,我认为我的Cloudfront设置是正确的:

  

设置对象缓存:使用原始缓存标头

我创建了一个页面,您可以在其中看到相同的图像,直接从其原点加载,并由Cloudfront加载。如您所见,第二个图像不包含Cache-Control标头设置:

https://www.fanaticguitars.com/cache-control-test.php

有什么建议吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

错误配置在您的服务器上,而不在CloudFront上。

如果我连接到您的www服务器,然后撒谎并告诉它我通过设置HTTP img来要求www而不是Host: header(CloudFront在获取内容时正在执行的操作,如果您在缓存行为中将Host:标头列入白名单),在这种情况下,您的服务器不会返回Cache-Control标头,当请求定位到www时,它会(两次!)。

这是与您的服务器的连接,而不是与CloudFront的连接:

$ curl -v https://www.fanaticguitars.com/v2/avatar.png -H 'Host: img.fanaticguitars.com' > /dev/null

> GET /v2/avatar.png HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Accept: */*
> Host: img.fanaticguitars.com
>
< HTTP/1.1 200 OK
< Server: nginx
< Date: Thu, 09 Mar 2017 16:49:31 GMT
< Content-Type: image/png
< Content-Length: 9915
< Last-Modified: Wed, 01 Mar 2017 21:46:59 GMT
< Connection: close
< Accept-Ranges: bytes
<
* Closing connection #0