来源 Cache-Control 无法在 AWS Cloudfront 上运行

Origin Cache-Control not working on AWS Cloudfront

我正在使用 AWS Cloudfront 提供我的图像。原始图像 header 包括 Cache-Control 设置,但这些 header 未传输到 AWS。我检查了 AWS 文档,我认为我的 Cloudfront 设置是正确的:

Settings Object Caching: Use Origin Cache Headers

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

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

有什么建议吗?

谢谢。

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

如果我连接到您的 www 服务器,然后对它撒谎并通过设置 HTTP Host: 告诉它我要求的是 img 而不是 www header(这是 CloudFront 在获取内容时所做的,如果您在缓存行为中将 Host: header 列入白名单),您的服务器不会 return Cache-Control headers 在这种情况下 即使它确实(两次!)当请求针对 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