AWS ECS上的Docker容器中的SSL重定向

时间:2019-10-23 11:37:30

标签: nginx amazon-ecs amazon-elb

我有一个前端角度应用程序,在aws ecs ec2的nginx docker容器中运行。这是saas产品,其他第三方域名将指向此前端docker容器。我已经为该目标组设置了默认规则,但是我想知道如何为每个域设置ssl。 ALB当前仅支持100条侦听器规则,即每个侦听器实际上只有50条规则(考虑到80和443)

后端api已填充了

30条规则。

如果我有150个域需要指向此前端,如何设置ssl?如果我在nginx的端口80虚拟主机中设置了301重定向,例如

return 301 https://$host$request_uri

该请求将再次传递到应用程序负载平衡器端口443,它将占用默认ssl并可能导致ssl错误。有没有机会使nginx https重定向而又不返回应用程序负载平衡器的端口443?或其他任何方法?我认为多域ssl证书是一种选择,因此可以使其成为负载均衡器上的默认ssl。

2 个答案:

答案 0 :(得分:0)

您是否可以访问所有这些域的SSL证书?如果是,则可以在nginx容器中对其进行配置。使用网络负载平衡器而不是ALB,并在端口443上添加一个TCP侦听器,该侦听器将不终止SSL,并将流量重定向到将终止证书的nginx容器。

您还可以动态地重新加载nginx配置以动态设置证书。

答案 1 :(得分:0)

AWS负载平衡器现在支持SSL重定向,因此您不必在容器上进行此操作。

此外,您的443侦听器可以添加多个证书。因此,只需将所有证书添加到负载均衡器上的443侦听器即可。

然后在您的443个侦听器规则中,只有一条规则即可:

  • IF:否则请求将不会路由
  • 时间:
    • HTTPS,端口443
    • 重定向到“原始主机,路径,查询”
    • “ 301-永久移动”状态

现在,您所有的http请求都将通过重定向回HTTPS的方式发送回用户,而无需访问您的容器或nginx。当它们以HTTPS形式返回时,AWS ALB在那里拥有所有证书。

如果遇到负载平衡器的限制,则可能必须将它们“分成” 2个或3个ALB,但是我发现这更易于管理,尤其是在证书更改时间到来时。