AWS Cloudfront重定向TOO_MANY次

时间:2019-03-08 01:56:27

标签: amazon-web-services amazon-s3 amazon-cloudfront amazon-route53

我遵循Redirecting Internet Traffic to Another Domain and Redirecting HTTP Requests to HTTPS

这是我的状态。

s3 :3个用于网络托管的存储桶

1)example.com(其中的index.html具有策略),

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

3)重定向桶(对于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-direction.s3-website.ap-northeast-2.amazonaws.com

53号公路 输入2个域的A

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

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

但是我的网站返回了 ERR_TOO_MANY_REDIRECTS 。我有什么想念的吗?


解决方案

  1. 我删除了除一个桶(重定向桶)以外的所有桶。

  2. 将资源(例如index.html)放入其中。

  3. 创建存储桶策略。

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
    ]
    

    }

  4. 然后,使用“静态Web托管”设置其属性,选择第一个选项,然后键入“ index.html”。否则

  5. 确保别名的目标是Route 53中的CloudFront。

(如果您是韩国人,请参阅my blog。)

1 个答案:

答案 0 :(得分:2)

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

您的问题中没有有关如何配置S3和CloudFront的足够信息,所以我将解释如何确定确切的问题。

要调试此问题,请使用curl

比方说,您的目标是所有用户都去https://www.example.com。现在,验证此URL是否不会重定向。注意:某些网络服务器会将DNS名称重定向到DNS名称+主页url。如果是这种情况,请使用首页网址(第二个命令)进行测试。

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

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

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

现在在编辑器中打开文件data.txt。第一行应为HTTP/1.1 200HTTP/2 200。密钥是200(200到299之间的任何数字)。相反,如果该数字是301(永久移动)或307(临时重定向),则您正在重定向用户。请参阅下面的示例。这很可能是问题所在。关键是弄清楚为什么要重定向所需的DNS名称以及重定向到的名称。然后找到重定向错误的配置文件/服务。

如果先前的命令运行正常,请测试其他受支持的DNS名称,并查看它们是否正确重定向到您想要的DNS名称(https://www.example.com)。一个常见的问题是重定向将转到错误的所需页面,然后该页面会来回重定向。

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

除所需的DNS名称外,所有其他示例的正确重定向:

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并测试所有受支持的可能性:

curl -i http://www.example.com

这应该重定向到https://www.example.com

curl -i http://example.com

这应该重定向到https://www.examle.com

curl -i https://example.com

这应该重定向到https://www.examle.com

使用您的首页网址和几个子页面重复上述测试。

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