AWS Cloudfront + Load Balancer, url изменяется с основного домена на субдомен балансировки нагрузки

Моя настройка такова:

  1. типы пользователей example.com в браузере
  2. запрос отправляется в AWS CloudFront, который перенаправляет HTTP на HTTPS и перенаправляет запрос на AWS Elastic LoadBalancer (elb.example.com)
  3. LoadBalancer перенаправляет запрос в экземпляр EC2, работающий с базой PHP Laravel
  4. EC2 нормально реагирует
  5. пользователь просматривает страницу правильно на example.com со всем остальным, прозрачным для него

Все это совершенно то, чего я хочу, ОДНАКО …..

  • Если пользователь переходит к любой кнопке на странице, URL-адрес в браузере станет elb.example.com (он должен оставаться example.com)
  • Если я перейду к просмотру источника страницы, все ссылки на любую кнопку на странице будут иметь базовый URL-адрес elb.example.com (он должен быть example.com)

Причина в том, что EC2 видит запрос, поступающий из балансировщика нагрузки, поэтому он предполагает, что базовый url – elb.example.com и генерирует все ссылки соответственно.

Как сделать EC2 посмотреть базовый url как example.com?

Такое поведение, вероятно, связано с тем, что по умолчанию CloudFront задает заголовок запроса Host: HTTP исходному имени хоста, в данном случае elb.example.com. Затем приложение предположительно создает ссылки на основе этого имени хоста.

Если вместо этого вы настроите CloudFront на белый список этого заголовка для пересылки в начало координат, заголовок Host, отправленный браузером (example.com), будет отправлен в приложение CloudFront, поэтому приложение должно вести себя так, как вы ожидали и использовать это значение при создании ссылок. При этом CloudFront по-прежнему использует имя хоста исходного сервера для поиска DNS, необходимого для установления TCP-соединения с источником (в этом случае ELB), но перестает вставлять это имя хоста в заголовки HTTP-запросов.

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesForwardHeaders