AWS Cloudfront重定向TOO_MANY次

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS Cloudfront重定向TOO_MANY次相关的知识,希望对你有一定的参考价值。

我跟着qazxsw poi。

这是我的状态。

s3:3个用于虚拟主机的存储桶

1)example.com(index.html中有政策),

2)www.example.com(用于请求重定向,没有策略,重定向到example.com)

3)bucket-for-redirection(用于cloudfront,没有策略,重定向到example.com,https协议)

cloudfront:1 CloudFront

  • CNAME:example.com,www.example.com
  • 源域名和路径:bucket-for-redirection.s3-website.ap-northeast-2.amazonaws.com
  • 来源ID:S3-Website-bucket-for-redirection.s3-website.ap-northeast-2.amazonaws.com

Route 53 Type A for 2 domain

1)example.com:别名目标是CloudFront

2)www.example.com:别名目标是s3

但我的网站返回ERR_TOO_MANY_REDIRECTS。我错过了什么吗?


  1. 除了一个(桶重定向)之外,我删除了所有桶。
  2. 把资源(例如index.html)放在那里。
  3. 创建存储桶策略。 Redirecting Internet Traffic to Another Domain and Redirecting HTTP Requests to HTTPS }
  4. 然后,使用“静态虚拟主机”设置其属性,选择第一个选项,然后键入“index.html”或其他。
  5. 确保Alias的目标是Route 53中的CloudFront。

(如果你是韩国人,请参考{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ] 。)

答案

此问题是由太多重定向引起的。这意味着用户将转到一个URL,然后将用户发送到另一个URL,然后发送到另一个URL,... Web浏览器检测到多个重定向并向用户显示错误。否则,用户可能会不断地从一个URL移动到另一个URL并且从不显示所需的网页。

您的问题中没有足够的信息来说明您如何配置S3和CloudFront,因此我将解释如何确定确切的问题。

要调试此问题,请使用my blog

假设您的目标是所有用户都去curl。现在验证此网址没有重定向。注意:某些Web服务器会将DNS名称重定向到DNS名称+主页URL。如果是主页url(第二个命令)的情况测试。

https://www.example.com

或(替换为您的主页网址):

curl -i https://www.example.com > data.txt

现在在编辑器中打开文件curl -i https://www.example.com/index.html > data.txt 。第一行应该是data.txtHTTP/1.1 200。关键是200(200到299之间的任何东西)。如果编号为301(永久移动)或307(临时重定向),则表示您正在重定向用户。请参阅下面的示例。这很可能是问题所在。关键是要弄清楚为什么你想要的DNS名称重定向以及它重定向到什么。然后找到错误重定向的配置文件/服务。

如果上一个命令工作正常,则测试其他支持的DNS名称,看看它们是否正确重定向到您想要的DNS名称(HTTP/2 200)。一个常见的问题是重定向将转到错误的所需页面,然后来回循环重定向。

您的目标是Web服务器返回以下内容(包括HTTP标头和HTML正文)。重要的项目是状态代码(301或307)和重定向https://www.example.com(下面的第5行)。重定向会忽略HTML正文。

示例正确重定向除所需DNS名称之外的所有内容:

location

使用curl并测试所有支持的可能性:

HTTP/2 301
date: Fri, 08 Mar 2019 04:17:18 GMT
server: Apache
x-frame-options: SAMEORIGIN
location: https://www.example.com/
content-length: 232
content-type: text/html; charset=iso-8859-1
via: 1.1 google
alt-svc: quic=":443"; ma=2592000; v="46,44,43,39"

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.example.com/">here</a>.</p>
</body></html>

这应该重定向到curl -i http://www.example.com

https://www.example.com

这应该重定向到curl -i http://example.com

https://www.examle.com

这应该重定向到curl -i https://example.com

使用主页网址和一些子页面重复上述测试。

即使在正确运行的网站上,我看到的一个常见问题是用户被重定向不止一次。正确设计的重定向应该将用户一步发送到正确的位置,而不是多个步骤。多次重定向会减慢到正确的页面。

以上是关于AWS Cloudfront重定向TOO_MANY次的主要内容,如果未能解决你的问题,请参考以下文章

AWS CloudFront 重定向到 S3 存储桶

AWS CloudFront 响应 307 临时重定向

通过 AWS Lambda 和 CloudFront 重定向 URL

AWS CloudFront 如何遵循 S3 存储桶重定向规则?

如何在 AWS S3 网站 CloudFront 中设置别名重定向?

AWS CloudFront 和 S3,使用单一重定向处理 WWW 和 HTTPS