AWS Cloudfront 重定向 TOO_MANY 次
AWS Cloudfront redirects TOO_MANY times
我关注了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) 用于重定向的存储桶(用于云端,无策略,重定向至 example.com,https 协议)
云端:1个云端
- 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
53 号公路
为 2 个域键入 A
1) example.com:别名目标是 CloudFront
2) www.example.com: 别名目标是 s3
但是我的网站returnsERR_TOO_MANY_REDIRECTS。我错过了什么吗?
解决方案
我删除了除一个(用于重定向的桶)之外的所有桶。
将资源(例如index.html)放在那里。
创建存储桶策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AddPerm",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
然后,使用 "Static Web Hosting"、select 第一个选项设置其属性,然后键入 'index.html' 或其他。
确保别名的目标是 Route 53 中的 CloudFront。
(如果你是韩国人,请参考my blog。)
此问题是由于重定向过多造成的。这意味着用户将转到一个 URL,然后用户将转到另一个 URL,然后再转到另一个 URL,... Web 浏览器检测到多个重定向并显示一个错误的用户。否则,用户可能会陷入不断从一个 URL 移动到另一个的循环,并且永远不会显示所需的网页。
您的问题中没有足够的信息说明您是如何配置 S3 和 CloudFront 的,所以我将解释如何确定确切的问题。
要调试此问题,请使用 curl
。
假设您的目标是所有用户都去 https://www.example.com
。现在验证这个 url 没有重定向。注意:某些网络服务器会将 DNS 名称重定向到 DNS 名称 + 主页 url。如果是这种情况,请使用主页 url(第二个命令)进行测试。
curl -i https://www.example.com > data.txt
或(替换为您的主页 url):
curl -i https://www.example.com/index.html > data.txt
现在在编辑器中打开文件 data.txt
。第一行应该是 HTTP/1.1 200
或 HTTP/2 200
。关键是 200(200 到 299 之间的任何值)。相反,如果数字是 301(永久移动)或 307(临时重定向),那么您正在重定向用户。请参阅下面的示例。这很可能是问题所在。关键是弄清楚为什么你想要的 DNS 名称被重定向以及它被重定向到什么。然后找到重定向错误的配置文件/服务。
如果前面的命令工作正常,则测试其他受支持的 DNS 名称并查看它们是否正确重定向到您想要的 DNS 名称 (https://www.example.com)。一个常见的问题是重定向会转到错误的所需页面,然后循环来回重定向。
您的目标是网络服务器 returns 以下内容(包括 HTTP headers 和 HTML body)。重要的项目是状态代码(301 或 307)和重定向 location
(下面第 5 行)。 HTML body 被重定向忽略。
除了所需的 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
使用您的主页 url 和几个子页面重复上述测试。
我在正确 运行 网站上看到的一个常见问题是用户被重定向不止一次。正确设计的重定向应该一步将用户发送到正确的位置,而不是多步。多个重定向会减慢到达正确页面的速度。
我关注了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) 用于重定向的存储桶(用于云端,无策略,重定向至 example.com,https 协议)
云端:1个云端
- 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
53 号公路 为 2 个域键入 A
1) example.com:别名目标是 CloudFront
2) www.example.com: 别名目标是 s3
但是我的网站returnsERR_TOO_MANY_REDIRECTS。我错过了什么吗?
解决方案
我删除了除一个(用于重定向的桶)之外的所有桶。
将资源(例如index.html)放在那里。
创建存储桶策略。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::your-bucket-name/*" } ]
}
然后,使用 "Static Web Hosting"、select 第一个选项设置其属性,然后键入 'index.html' 或其他。
确保别名的目标是 Route 53 中的 CloudFront。
(如果你是韩国人,请参考my blog。)
此问题是由于重定向过多造成的。这意味着用户将转到一个 URL,然后用户将转到另一个 URL,然后再转到另一个 URL,... Web 浏览器检测到多个重定向并显示一个错误的用户。否则,用户可能会陷入不断从一个 URL 移动到另一个的循环,并且永远不会显示所需的网页。
您的问题中没有足够的信息说明您是如何配置 S3 和 CloudFront 的,所以我将解释如何确定确切的问题。
要调试此问题,请使用 curl
。
假设您的目标是所有用户都去 https://www.example.com
。现在验证这个 url 没有重定向。注意:某些网络服务器会将 DNS 名称重定向到 DNS 名称 + 主页 url。如果是这种情况,请使用主页 url(第二个命令)进行测试。
curl -i https://www.example.com > data.txt
或(替换为您的主页 url):
curl -i https://www.example.com/index.html > data.txt
现在在编辑器中打开文件 data.txt
。第一行应该是 HTTP/1.1 200
或 HTTP/2 200
。关键是 200(200 到 299 之间的任何值)。相反,如果数字是 301(永久移动)或 307(临时重定向),那么您正在重定向用户。请参阅下面的示例。这很可能是问题所在。关键是弄清楚为什么你想要的 DNS 名称被重定向以及它被重定向到什么。然后找到重定向错误的配置文件/服务。
如果前面的命令工作正常,则测试其他受支持的 DNS 名称并查看它们是否正确重定向到您想要的 DNS 名称 (https://www.example.com)。一个常见的问题是重定向会转到错误的所需页面,然后循环来回重定向。
您的目标是网络服务器 returns 以下内容(包括 HTTP headers 和 HTML body)。重要的项目是状态代码(301 或 307)和重定向 location
(下面第 5 行)。 HTML body 被重定向忽略。
除了所需的 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
使用您的主页 url 和几个子页面重复上述测试。
我在正确 运行 网站上看到的一个常见问题是用户被重定向不止一次。正确设计的重定向应该一步将用户发送到正确的位置,而不是多步。多个重定向会减慢到达正确页面的速度。