Указание домена для безопасного подключения к экземпляру ec2, на котором запущено приложение python

#amazon-web-services #nginx #https #port

#amazon-web-services #nginx #https #порт

Вопрос:

Допустим, у меня есть экземпляр AWS ec2, на котором запущено приложение python на определенном порту, скажем, 8000. Также представьте, что у меня есть имя домена, скажем www.abcd.com которым я владею. Что нужно, чтобы мой веб-сайт использовал https и безопасно перенаправлял на приложение на моем ec2, которое прослушивает порт 8000? Возможно ли это вообще или мне нужно что-то вроде nginx между ними?

Ответ №1:

Во-первых, вам нужно будет убедиться, что ваш EC2 находится в общедоступной подсети с общедоступным IP-адресом, также потребуется, чтобы его группа безопасности была открыта на любом порту, на который вы нажимаете (8000). На этом этапе вы должны иметь возможность подключать свое приложение к общедоступному ip: порту.

Теперь, если вы хотите выполнить вышеуказанное при использовании домена, вам потребуется использовать сервис AWS Route 53. Исходя из этого, вы можете создать DNS-маршрутизацию с использованием вашего домена. Вы захотите создать маршрут из: application.example.com к общедоступному IP-адресу ваших экземпляров. После этого вы сможете посетить: application.example.com и нажмите на свое приложение. Выполняя следующие действия, теперь можно сделать ваш экземпляр EC2 приватным.

Теперь, если вы хотите включить HTTPS поверх этого, лучшим способом было бы создать общедоступный балансировщик нагрузки с прикрепленным сертификатом, который будет принимать трафик HTTPS от вашего пользователя, а затем перенаправлять этот трафик по HTTP на ваш EC2 на выбранный порт (8000). После этого вы захотите изменить запись Route53, чтобы она указывала на ваш балансировщик нагрузки, а не непосредственно на ваш EC2.

Комментарии:

1. Я не могу заставить это работать от начала до конца. В балансировщике нагрузки я вижу следующий раздел, в котором он просит установить: «Протокол балансировки нагрузки, порт балансировки нагрузки, протокол экземпляра, порт экземпляра, шифр, SSL-сертификат» — это протокол / порт LB, для которого должен быть установлен https / 443, а для протокола экземпляра — http / 8000, поскольку мое приложение запускаетсяна порту 8000 на ec2? Я также устанавливаю SSL-сертификат на тот, который я получил от службы route 53.

2. @user2399453 Протокол, который вы хотите использовать, — HTTPS (443). Это то, на что балансировщик нагрузки получает общедоступный трафик. Затем необходимо настроить порт, на который балансировщик нагрузки перенаправляет этот запрос, когда он попадает на ваш EC2. Если вы работаете через консоль AWS, это будет шаг 4. Настройка маршрутизации ‘. Вам нужно будет выбрать HTTP и порт (8000), по которому вы хотите, чтобы балансировщик нагрузки связывался с вашим EC2.

Ответ №2:

Да, это вполне возможно.

Вот пошаговая процедура для этого :-

  • вам необходимо создать hosted zone службы Amazon на маршруте 53
  • Затем он используется ns для подключения к вашему domain (где бы вы ни зарегистрировались)
  • Затем вам необходимо подключить ваш ec2 экземпляр ip к вашей размещенной зоне
  • Теперь вы можете получить доступ к своим ec2 экземплярам, используя этот домен, но он не будет https
  • Для https этого вам нужно certificate , что вы можете получить из aws certificate-manager
  • После получения certificate , следуйте инструкциям из этого блога, как настроить HTTPS для вашего домена на AWS.

    ПРИМЕЧАНИЕ: — Это всего лишь пункт uber, следуйте ему и ищите больше информации о том, как именно вы это делаете в вашем случае. Я выполнил этот шаг при развертывании с использованием elastic-beanstalk .

Комментарии:

1. «После получения сертификата подключите его к своему домену, после чего вы сможете получить доступ к веб-сайту по протоколу https». — Это совсем непонятно для тех, кто, похоже, новичок в DNS и HTTPS. Следует, по крайней мере, указать пользователю правильное направление для использования CDN / ELB / ALB / Apache / Nginx