【发布时间】:2017-10-23 05:22:51
【问题描述】:
我正在尝试更新我的博客 (jacopretorius.net) 以使用 HTTPS。我创建了一个临时版本来测试它,而不是仅仅在实时版本上尝试这个 - staging.jacopretorius.net
我的堆栈如下所示:
- 杰基尔
- 亚马逊 S3
- 亚马逊云端
- 亚马逊 Route53
我正在使用 s3_website gem 将生成的 Jekyll 内容部署到 S3 存储桶。这个 gem 还更新了相关的 Cloudfront 发行版。我将 Cloudfront 分发配置为使用我的证书,并将暂存 URL 作为 CName 添加到分发中。最后,我从 Route 53 中添加了 2 个别名来指向分配,一个用于 IPv4,一个用于 IPv5。
一切似乎都按预期工作,除了一些我不理解的奇怪行为。除了https://staging.jacopretorius.net/archive/,所有页面似乎都通过HTTPS 提供。我认为这可能是因为 URL 没有扩展名,但 https://staging.jacopretorius.net/about/ 正在正确提供。这在 Chrome 和 Safari 中一直在发生。
当我使用 curl 转储标头时,标头似乎表明一个 URL(/about/ 之一)始终是 Cloudfront 未命中。
curl -s -D - https://staging.jacopretorius.net/archive/ -o /dev/null
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 63941
Connection: keep-alive
Date: Sun, 22 Oct 2017 20:11:29 GMT
Last-Modified: Sun, 22 Oct 2017 19:25:42 GMT
ETag: "289e13a6c58bd46dfa55d22cd5e0d1a6"
Server: AmazonS3
Age: 51
X-Cache: Hit from cloudfront
Via: 1.1 0a955f76d9c9f3e49899a6eb7a411ec5.cloudfront.net (CloudFront)
X-Amz-Cf-Id: avt5CRfDiCwEU7TlhvUoCQKsR_jGB_2M_w5zy5mmDoFhogtS4doaQA==
curl -s -D - https://staging.jacopretorius.net/about/ -o /dev/null
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 3757
Connection: keep-alive
Date: Sun, 22 Oct 2017 20:12:24 GMT
Last-Modified: Sun, 22 Oct 2017 19:25:42 GMT
ETag: "fa3a2f263be864012dc5a792d651a46c"
Server: AmazonS3
X-Cache: Miss from cloudfront
Via: 1.1 fc8718fc654846d5ff65e1100874c1fc.cloudfront.net (CloudFront)
X-Amz-Cf-Id: btONKzglg2FkPo9ycWiqQz-aBQ85sugrwTES14TfmedmBQNPPim_Jg==
Cloudfront documentation似乎表明这种URL没有问题,它只是说你应该保持一致(我就是)。
我真的很难过。我唯一的想法是,Cloudfront 以某种方式缓存 /archive/ 响应,并且它第一次尝试检索该资产时没有得到预期的响应,但由于内容在那里,这并没有完全加起来,它是只是不是 HTTPS。
【问题讨论】:
标签: amazon-s3 jekyll amazon-cloudfront amazon-route53