Как настроить Nodejs, который находится в экземпляре AWS EC2, для приема HTTPS-запроса со стороны клиента

Я хотел бы спросить о том, как настроить Nodejs (бэкэнд/сервер) для приема HTTPS-запроса со стороны клиента (передний конец).

Что мы сделали.

  • Зарегистрированное доменное имя в AWS.
  • Пункт списка
  • Запрошенный SSL в ACM.
  • Создайте ведро в S3 и сохраните в нем наш интерфейсный код (angular 5).
  • Создал дистрибутив в облаке, поместил туда наш собственный ssl и подключился к корзине в S3.
  • Мы также настраиваем экземпляр ec2 и храним там наш внутренний код (узел js).
  • В нашем интерфейсном коде мы подключаемся к IP-адресу наших экземпляров ec2, чтобы мы могли подключиться к серверной части.

Эта проблема:

  • Интерфейсная часть не может получить доступ к серверной части в инстансах ec2, поскольку интерфейсная часть — это https, а серверная часть — http (мы не знаем, как настроить его с http на https в экземпляре AWS EC2).
  • Знаете ли вы, как настроить веб-приложение в aws, код интерфейса и серверной части которого разделены?
  • Что мы пропустили?

person Richard Vergis    schedule 21.02.2018    source источник
comment
Просто у меня в голове, если вам нужен https на ec2, почему бы вам не поместить ec2 за балансировщиком нагрузки и не прикрепить к нему ACM ssl таким образом, чтобы у вас были фиксированные критерии https.   -  person Kush Vyas    schedule 21.02.2018
comment
Спасибо за ответ @KushVyas У меня уже есть ssl ACM для моего ELB, а также я сделал псевдоним для домена api.dummydomain.com. Проблема в том, как использовать этот api.dummydomain.com для использования в бэкэнд-коде nodejs, который является localhost:3000/dummyapi. ? Спасибо   -  person Richard Vergis    schedule 22.02.2018


Ответы (1)


Что мы пропустили?

Если я вас правильно понял, у вас есть дистрибутив Cloudfront, обслуживающий angular, который затем пытается подключиться к экземпляру EC2 — я полагаю, что IP-адрес или публичная запись DNS для EC2 жестко закодированы в коде angular.

Это не очень хорошая схема — если ваш EC2 выйдет из строя или изменится IP-адрес, вам нужно будет отправить новый сайт на S3 — и тогда для распространения этого изменения через Cloudfront потребуется время.

Что вам лучше делать, так это то.

  1. создать балансировщик нагрузки приложения
  2. создайте целевую группу и добавьте свой EC2 в эту целевую группу.
  3. добавьте прослушиватель в ALB, прослушивающий порт, к которому подключается ваше веб-приложение, с правилом, которое перенаправляет на HTTP-порт серверной части EC2.
  4. Добавьте запись псевдонима DNS маршрута 53 для ALB (поскольку ALB иногда уходят или меняют свой IP-адрес)
  5. Измените внешний код так, чтобы он указывал на запись псевдонима Route 53.

(Это невероятно упрощенный способ делать вещи, которые оставляют ваш EC2 открытым для Интернета и т. д. и т. д.).

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

Экземпляры AWS EC2 могут исчезнуть в любой момент, и когда они исчезнут, ваше приложение перестанет работать вместе с ними.

person mcfinnigan    schedule 21.02.2018
comment
Пункт 4, вероятно, должен быть следующим: измените код внешнего интерфейса, чтобы он подключался к конечной точке ALB (вместо IP-адреса EC2). - person Dusan Bajic; 21.02.2018
comment
@макфинниган. Спасибо за ваш отзыв. Мы попробуем это и сообщим вам о прогрессе позже. - person Richard Vergis; 22.02.2018
comment
@Дусан Баджик. Спасибо за предложение. Мы также попробуем это. - person Richard Vergis; 22.02.2018