Служба одностраничного приложения по определенному пути с помощью AWS - PullRequest
0 голосов
/ 03 июня 2019

В данный момент у меня есть mydomain.com, указывающий на экземпляр Django EC2 с ABL перед ним и CF перед ABL.Теперь у меня есть требование обслуживать одностраничное приложение React по определенному пути mydomain.com/my-specific-path (конечно, все по HTTPS)

Я пытался сделать все возможное, чтобы разместить свой SPA в корзине S3 и использовать CF для перенаправлениявызовы к этому S3.Но было невозможно обслуживать приложение по HTTPS таким образом (из-за хостинга и подпапок S3).

Сейчас я думаю о настройке обратного прокси-сервера перед моим приложением Django.Но я не знаю, является ли это лучшим решением, и я не знаю, как это сделать.

Не могли бы вы дать мне несколько советов о том, как обслуживать SPA по определенному пути?

Заранее спасибо.

1 Ответ

1 голос
/ 03 июня 2019

Вам необходимо:

1) Добавьте свой ALB в качестве источника в ваш дистрибутив CloudFront

2) Добавьте ваш контейнер S3 веб-сайт в качестве источника в ваш дистрибутив CloudFront

Примечание: Добавление S3 в качестве источника из выпадающего списка, который заполняется здесь автоматически, не будет работать для размещения веб-сайта из S3. Эта функция предназначена только для размещения статических файлов.

2a) При необходимости заблокируйте корзину S3 до CloudFront, используя условие в политике корзины, которое проверяет значение заголовка, которое знает только CloudFront и ваша корзина S3

3) Установите корневой объект по умолчанию в вашем дистрибутиве CloudFront как index.html

4) Загрузите ваше реактивное приложение в подпапку в вашей корзине S3 , а не в корне. Эта подпапка должна соответствовать пути, который вы указали в исходном приложении React в CloudFront

5) Установите поведение по умолчанию в вашем дистрибутиве CloudFront, которое указывает на ваш ALB

6) Установите поведение в вашем дистрибутиве CloudFront, которое указывает my-specific-path/* на источник вашего сегмента S3

7) Завершите работу SSL в вашем дистрибутиве CloudFront с помощью AWS Certificate Manager

Эта настройка должна предоставлять вам SSL как для вашего приложения Django, так и для вашего приложения React, размещенного на S3.

У меня это работает, скриншоты ниже:

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

...