Пути разрешаются не в доменном имени, а в URL-адресе Elastic Beanstalk

Что я сделал до сих пор:

  • Я загрузил свое приложение Laravel в Elastic Beanstalk
  • Я купил доменное имя на namecheap: domain.net
  • Я установил хостинговую зону для domain.net на Route 53
  • Я ввел информацию NS из Hosted Zone в разделе моего домена на namecheap
  • Я получил сертификат от диспетчера сертификатов и связанный domain.net, я получил второй сертификат для *.domain.net
  • Я создал запись CNAME для сертификата в размещенной зоне (см. Рисунок ниже)
  • Я создал раздачу CloudFront, в поле Origin Domain Name поместил URL-адрес Elastic Beanstalk, выбрал Redirect HTTP to HTTPS, ввел domain.net unter Alternate Domain Names и выбрал сертификат SSL для domain.net
  • Я повторил предыдущий шаг для *.domain.net
  • Затем в размещенных зонах я создал запись псевдонима для domain.net, указывающую на раздачу CloudFront для domain.net, и другую запись псевдонима для *.domain.net, указывающую на соответствующий дистрибутив CloudFront (см. Рисунок ниже).

Вопрос

Я зашел на сайт и получил SSL-соединение для domain.net и www.domain.net, даже перенаправление с HTTP на HTTPS работает. Но когда я нажимаю ссылку в меню навигации, например, как «О программе», я получаю страницу НЕ domain.net/about, а http://myenvironment-env.eba-zxsw5igy.us-east-1.elasticbeanstalk.com/about с небезопасным подключением. Однако, когда я ввожу URL-адрес вручную в браузере, например, domain.net/about, я получаю правильный URL-адрес. Что я сделал не так?

Вот обзор записей из размещенной зоны. введите описание изображения здесь

Обновлять

Настройка Route 53 с тем же кодом приложения Laravel на Elastic Beanstalk без SSL (+ CloudFront) работает нормально. Я могу получить доступ к любым ссылкам на веб-сайте, они правильно разрешаются на domain.net/about и т. Д.

Может я неправильно подключаю CloudFront к Elastic Beanstalk? Опять же, вот что я делаю в дистрибутиве CloudFront: в разделе «Имя домена источника» помещаю URL-адрес Elastic Beanstalk, выбираю «Перенаправить HTTP на HTTPS», ввожу domain.net unter Alternate Domain Names и выбираю сертификат SSL для domain.net


comment
Я почти уверен, что эта проблема связана не с AWS, а с тем, как вы создаете ссылки внутри своего приложения.   -  person Mark B    schedule 23.12.2020
comment
Я тоже это читал, но дело в том, что раньше я связывал свое доменное имя с EBS с тем же кодом приложения и ссылками, разрешенными в правильных URL-адресах. К сожалению, я удалил старую размещенную зону, и у меня нет никаких настроек (этого не следовало делать). Прямо сейчас я только хотел снова настроить его с помощью SSL. Может ли проблема заключаться в создании записи для URL-адреса EBS в размещенной зоне? Я невежественен.   -  person jamawe    schedule 23.12.2020
comment
Нет, вам необходимо настроить свое программное обеспечение на сервере, чтобы знать, какое имя домена оно должно использовать для построения ссылок. Это не проблема Route53.   -  person Mark B    schedule 23.12.2020
comment
Я не знаю, ответит ли это на ваш вопрос, поскольку задействовано много движущихся частей. Взгляните на этот документ, если вы еще этого не сделали. Возможно, это поможет решить проблему: aws.amazon. ru / de / premiumsupport / knowledge-center /   -  person Dennis Traub    schedule 23.12.2020
comment
Спасибо за ответ, но я хочу использовать не Load Balancer, а CloudFront с Elastic Beanstalk.   -  person jamawe    schedule 24.12.2020


Ответы (1)


Итак, я нашел решение своей проблемы. По умолчанию CloudFront устанавливает заголовок HTTP-запроса на исходное имя хоста - для меня это был URL-адрес ElasticBeanstalk. Затем приложение создает ссылки на основе этого источника.

Чтобы изменить это поведение, необходимо создать политику кеширования и политику запросов источника и добавить заголовок хоста в белый список, поэтому CloudFront использует заголовок hist, который отправляется из браузера.

Этот ответ дал мне подсказку о том, что делать, а также эти ресурсы AWS:

person jamawe    schedule 27.01.2021