AWS Cloudfront перенаправляет TOO_MANY раз - PullRequest
2 голосов
/ 08 марта 2019

Я следовал Перенаправление интернет-трафика в другой домен и перенаправление HTTP-запросов на HTTPS .

Это мой статус.

s3 : 3 корзины для веб-хостинга

1) example.com (в нем index.html, есть политика),

2) www.example.com (для перенаправления запросов, без политики, перенаправить на example.com)

3) корзина для перенаправления (для облачного фронта, без политики, перенаправление на example.com, протокол https)

Облачный фронт : 1 CloudFront

  • CNAME: example.com, www.example.com
  • Исходное доменное имя и путь: bucket-for-redirection.s3-website.ap-northeast-2.amazonaws.com
  • Идентификатор источника: S3-Website-bucket-for-redirection.s3-website.ap-northeast-2.amazonaws.com

Маршрут 53 Тип А для 2 доменов

1) example.com: целью Alias ​​является 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. Затем установите его свойства с помощью «Статический веб-хостинг», выберите первый вариант и введите «index.html» или еще.

  5. Убедитесь, что целью Alias ​​является CloudFront на маршруте 53.

(Если вы кореец, см. мой блог .)

1 Ответ

2 голосов
/ 08 марта 2019

Эта проблема вызвана слишком большим количеством перенаправлений. Это означает, что пользователь переходит на один URL-адрес, затем пользователь отправляется на другой URL-адрес, а затем отправляется на другой URL-адрес ... Веб-браузер обнаруживает несколько перенаправлений и отображает ошибку пользователя. В противном случае пользователь может зацикливаться, постоянно переходя от одного 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). Распространенной проблемой является то, что перенаправления переходят на неправильный желаемый страница, которая затем перематывает назад и вперед перенаправляя.

Ваша цель состоит в том, чтобы веб-сервер возвращал следующее (которое включает как заголовки 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

Повторите вышеуказанные тесты, используя URL-адрес своей домашней страницы и несколько подстраниц.

Обычная проблема, которую я вижу даже на правильно работающих веб-сайтах, заключается в том, что пользователь перенаправляется более одного раза. Правильно спроектированные перенаправления должны отправлять пользователя в правильное местоположение за один шаг, а не за несколько шагов. Многократные перенаправления замедляют получение правильной страницы.

...