如何在AWS EC2上正确设置HTTPS?

时间:2020-04-29 01:13:53

标签: amazon-web-services amazon-ec2 https amazon-elb http-status-code-502

?

在尝试通过HTTPS协议运行AWS EC2上托管的API时遇到问题。

该API在没有的情况下正常运行,但是,尝试进行配置(按照建议的步骤)后,我收到了 502 Bad Gateway 消息。

这是我的配置:

  • 运行EC ExpressJS应用程序的Docker容器的AWS EC2(t3a.small)侦听端口3000;
  • 打开了http:80和https:443的安全组;
  • 涵盖以下域的ACM(mydomain.com,*。mydomain.com);
  • ELB侦听端口:http:80,https:443,https:3000;
  • 第53条路线,我的托管区域包含带有ELB DNS值的A型记录;

以前的网址

http://ec2-ip-address.zone.compute.amazonaws.com:3000/api/

现在

https://api.mydomain.com:443/api/{resourceName}

请,如果我错过了让我知道的东西,我将对如何正确设置的任何见解表示感谢。

1 个答案:

答案 0 :(得分:0)

因此,在@Marcin(请参阅我的问题的评论)和其他人(Reddit论坛)的帮助下,我能够使其正常工作。

问题是ELB无法通过3000端口与我的EC2实例通信,因为该端口未在我的安全组中配置。

您需要使用HTTP:80和HTTPS:443创建ALB(应用程序负载平衡器)和SG,然后选择您的实例,并将其设置为通过端口3000(或您的EC2正在运行的任何端口)与之通信)。

您应该有两个安全组,一个安全组分配给EC2实例,一个安全组分配给ELB。 EC2安全组应允许来自端口3000的ELB sg的访问。ELBsg应允许端口80和443的全球访问。 ELB不应侦听端口3000(面向世界),而应将内部端口设置为3000。如果一切正常,则应该能够在ELB控制台中将EC2实例视为“正常”。

此外,在运行状况检查中,不要忘记将其设置为侦听实际返回内容的终结点,例如200 OK状态代码,否则,AWS ELB将假定与EC2实例没有连接。

相关问题