CloudFront 为域提供旧内容

CloudFront serves old content for Domain

一周前,我决定在使用 Buddy 设置 CI/CD 管道时为静态 Web 托管 s3 存储桶实施云端分发。更改此设置时,我确保将我站点 eckmantek.com 的路由 53 中的 A 和 AAAA 记录从它们的默认值更改为我的分配,即 d22tb0q1u7k32l.cloudfront.net。通过此设置,我开始使用我的管道,但我发现在我实施 cloudfront 之前,该域一直在为我的旧版本网站提供服务。

一开始以为只是等待dns刷新而已,没想到现在已经一周了

当我手动检查我的 s3 存储桶时,我在那里看到了最新版本,如果我直接导​​航到分发版,我也可以看到更新后的站点。这几乎就像域被路由到一个幽灵桶,比如一个隐藏的缓存之类的。欢迎任何帮助!

这不是真正的编程问题,但我会试一试。我的 DNS 查询告诉我,您的主域 eckmantek.comd22tb0q1u7k32l.cloudfront.net return 相同 A-records,这是一个好兆头。

$ 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。

如果我们从您的网站查看 headers,我们还可以看到缓存似乎被禁用并且内容有一段时间没有更新了:

$ 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 可能会更改。