使用 AWS CloudFront 向 AWS S3 存储桶提供 HTTPS 服务,但某些图像陷入重定向循环中

问题描述 投票:0回答:1

昨天,我设置了证书和 CloudFront,以便将我的网站从 http 迁移到 https。 http 自动重定向到 https。 CloudFront 发行版指向 S3 存储桶。一切正常;但有些文件陷入重定向循环。我以为是CF有点慢,所以我把它留了一夜。 12小时后...同样的问题。

示例:

https://www. humantruth.info/1.jpg -> 重定向循环。(20次重定向,然后浏览器放弃)

https://www. humantruth.info/bus_seats.jpg -> 负载正常。

在 S3 存储桶中,它们都具有“标准”存储类别(无论这意味着什么),并且没有迹象表明其中一个存储桶中有任何特殊设置,而另一个则没有。

我在工作和家里的不同设备上尝试了不同的浏览器,并得到了相同的结果。我每隔几年才更改一次AWS设置,并且设置非常简单,并且从未尝试在单个图像上应用特定的转发或设置;我确信两者的设置是相同的。

(Q1) 我应该做哪些/种类/事情来进行故障查找? 我遵循了 AWS 指南中的“如何启用 https”,并将所有设置保留为默认值(如指南中所述),除了一些基本设置那些(例如在发行版上设置起源)。

(问题2)是否是缓存问题? 当我更新S3存储桶项目时,实时站点上的内容没有更新,甚至3小时后也是如此。通常情况下,它会在一分钟内更新。所以我需要告诉CF更频繁地更新。也许这也是重定向问题的一个模糊原因。

看着 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/understanding-how-origin-request-policies-and-cache-policies-work-together.html,我很想更新此设置:

CloudFront distribution > Edit Behaviour > Cache key and origin requests

默认:

Cache policy and origin request policy (recommended)

致:

Legacy cache settings > None (for Headers, Query Strings and Cookies).

我根本不使用cookies,我不做任何类型的特殊请求;整个网站是静态.html页面,静态.js,静态.css和静态图像内容。

(Q3)发生了什么事?我有一个非常非常简单的设置,像这样的复杂性让我觉得我应该放弃 https 的整个概念,只保留 http。 CF 是否存在根本性错误和/或设置指南中缺失?

amazon-web-services amazon-s3 amazon-cloudfront http-status-code-301
1个回答
0
投票

修好了。解决办法:

After setting up CloudFront, do an Invalidate on /* files.

Amazon S3 存储桶必须已默认在后台使用 CloudFront。当我创建自己的 CloudFront 发行版时,某些文件在仅存在于 http 中时就已被预先缓存。因此,当我实现 http > https 转发时,无论如何,一些文件仍然被 CloudFronts 重定向——旧的 http 版本的预缓存是错误的。

因此,无论我做什么,它们都永远不会起作用(特别是对于一些文件),并且我的设置是什么并不重要。在 CloudFront 中,解决方案是使用“所有”模式 /* 强制所有文件“失效”。

非常烦人的是,从一开始在执行任何操作之前,默认行为是任何已缓存的文件都会进行重定向循环。

AWS 确实应该将 S3 站点从 http 转换为 https 的设置指南中包含这一额外步骤,以防止此错误。

© www.soinside.com 2019 - 2024. All rights reserved.