CloudFront 为域提供旧内容
Posted
技术标签:
【中文标题】CloudFront 为域提供旧内容【英文标题】:CloudFront serves old content for Domain 【发布时间】:2021-12-28 08:27:30 【问题描述】:一周前,在与 Buddy 建立 CI/CD 管道时,我决定为静态 Web 托管 s3 存储桶实施云端分发。更改此设置时,我确保将我的站点 eckmantek.com 的路由 53 中的 A 和 AAAA 记录从它们的默认值更改为我的分布,即 d22tb0q1u7k32l.cloudfront.net。进行此设置后,我开始使用我的管道,但在我实施 cloudfront 之前,我发现该域一直在为我的旧版本网站提供服务。
一开始我以为只是等待dns刷新的问题,但现在已经一个星期了。
当我手动检查我的 s3 存储桶时,我会在那里看到最新的构建,如果我直接导航到分发版,我也可以看到更新后的网站。这几乎就像域被路由到一个幽灵桶,比如一个隐藏的缓存或其他东西。欢迎任何帮助!
【问题讨论】:
是否有多个 CloudFront 分配可以接受您的域的请求? 【参考方案1】:不是真正的编程问题,但我会试一试。我的 DNS 查询告诉我,您的主域 eckmantek.com
和 d22tb0q1u7k32l.cloudfront.net
返回相同的 A 记录,这是一个好兆头。
$ dig A eckmantek.com
; <<>> DiG 9.16.1-Ubuntu <<>> A eckmantek.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3984
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;eckmantek.com. IN A
;; ANSWER SECTION:
eckmantek.com. 60 IN A 18.66.2.121
eckmantek.com. 60 IN A 18.66.2.15
eckmantek.com. 60 IN A 18.66.2.17
eckmantek.com. 60 IN A 18.66.2.8
$ dig A d22tb0q1u7k32l.cloudfront.net
; <<>> DiG 9.16.1-Ubuntu <<>> A d22tb0q1u7k32l.cloudfront.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23164
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;d22tb0q1u7k32l.cloudfront.net. IN A
;; ANSWER SECTION:
d22tb0q1u7k32l.cloudfront.net. 60 IN A 18.66.2.121
d22tb0q1u7k32l.cloudfront.net. 60 IN A 18.66.2.15
d22tb0q1u7k32l.cloudfront.net. 60 IN A 18.66.2.8
d22tb0q1u7k32l.cloudfront.net. 60 IN A 18.66.2.17
这意味着流量会到达 CloudFront。假设您已正确配置 CloudFront 以使用 S3 存储桶作为源,问题可能是 CloudFront 缓存旧站点并且 TTL 太长。
您可以使用invalidations 明确清除 CloudFront 中的缓存,但您必须为此付费。
完成此操作后,请确保设置合理的 TTL。
如果我们检查您网站的标头,我们还可以看到缓存似乎已被禁用,并且内容已经有一段时间没有更新了:
$ curl -sD - https://eckmantek.com -o /dev/null
HTTP/2 200
content-type: text/html
content-length: 2051
last-modified: Fri, 22 Nov 2019 11:17:48 GMT
accept-ranges: bytes
server: AmazonS3
via: 1.1 a06e85a5c7853d2f85565a048a9d2609.cloudfront.net (CloudFront), 1.1 99d54fc6a14abf3079ffadd5aa7c99de.cloudfront.net (CloudFront)
x-amz-cf-pop: YTO50-C3
date: Wed, 17 Nov 2021 11:19:18 GMT
cache-control: public, must-revalidate, max-age=0
etag: "e8179ec55581b2082badf57315b368b8"
vary: Accept-Encoding
x-cache: RefreshHit from cloudfront
x-amz-cf-pop: TXL50-P1
x-amz-cf-id: ZlWuOHfa-TjS1tzL74oXFnRHaCfyPm118OhO5gOm6pXFIfOI1LdDeQ==
它是从 S3 提供的,但也许您应该检查它是否使用了正确的 S3 存储桶。
顺便说一句:您应该使用 ALIAS-record or a CNAME record 将您的域指向 CloudFront,因为 CloudFront IP 可能会更改。
【讨论】:
以上是关于CloudFront 为域提供旧内容的主要内容,如果未能解决你的问题,请参考以下文章