Cloudfront SSL проблема на WordPress. Слишком много перенаправлений - PullRequest
0 голосов
/ 06 марта 2019

Позвольте мне сначала объяснить нашу архитектуру.

www.example.com CNAME указывает на распространение облачного фронта (d3xxxxx.cloudfront.net)

Источник для облачного фронта: route.example.com. Мы выбрали ** заголовки белого списка ** как ХОСТ в распределении облачного фронта

SSL установлен в Cloudfront для домена: www.example.com

route.domain.com указывает на облачный сервер Google, на котором установлены веб-сервер apache и wordpress.

Выпуск 1. Когда мы нажимаем на URL www.example.com без применения SSL-сертификата, домашняя страница загружает www.example.com, однако внутренние ссылки перенаправляются на «route.example.com» вместо www.example.com. Мы считаем, что это из-за siteurl на WordPress использует route.example.com

Выпуск 2 . После применения SSL-сертификата на облачном фронте, когда мы нажали на URL 'https://www.example.com',, веб-сайт закончил слишком много перенаправлений

Мы попробовали URL-адрес « WordPress + CloudFront Flexible SSL заканчивается в цикле перенаправления (https) », и, похоже, он нам не помогает.

Цель : Мы хотим, чтобы www.example.com использовал распространение через облачный фронт вместе с SSL, и не хотим предоставлять доступ к веб-серверу конечному пользователю. Источником облачного фронта должен быть route.example.com, в котором будет приложение WordPress.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 22 апреля 2019

У нас была похожая проблема. В нашем случае мы использовали не собственное доменное имя, а URL-адрес CloudFront.

Чтобы заставить HTTPS работать правильно, нам пришлось сделать две вещи:

  1. Убедитесь, что заголовок CloudFront-Forwarded-Proto пересылается во всех режимах работы кэша, включая поведение кэша по умолчанию.

  2. Добавьте следующий фрагмент кода к wp-config.php перед require_once( ABSPATH . 'wp-settings.php' );:

    if (isset($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'])
      && $_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] === 'https') {
      $_SERVER['HTTPS'] = 'on';
    }
    

Фрагмент кода, по сути, сообщает WordPress, что мы работаем за обратным прокси-сервером. Это заставляет его отвечать на запросы HTTPS правильно.

...