【问题标题】:ssl redirection in docker container on aws ecsaws ecs 上 docker 容器中的 ssl 重定向
【发布时间】:2020-02-19 15:37:24
【问题描述】:

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

30 条规则已被后端 api 填充。

如果我有 150 个域需要指向这个前端,我该如何设置 ssl?如果我在 nginx 的 80 端口 vhost 中设置 301 重定向,比如

return 301 https://$host$request_uri

请求将再次传递到应用程序负载平衡器端口 443,它将采用默认 ssl,并可能导致 ssl 错误。我们有没有机会在不返回应用程序负载均衡器的端口 443 的情况下进行 nginx https 重定向?或任何其他方法?我认为多域 ssl 证书是这里的一个选项,以便将其作为负载均衡器上的默认 ssl。

【问题讨论】:

    标签: nginx amazon-ecs amazon-elb


    【解决方案1】:

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

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

    然后在您的 443 侦听器规则中,只需一条规则:

    • IF:否则未路由的请求
    • 那么:
      • HTTPS,端口 443
      • 重定向到“原始主机、路径、查询”
      • “301 - 永久移动”作为状态

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的,我将拥有所有域的 ssl 证书。我在端口 80 和 443 (TCP) 上配置了一个网络负载均衡器,并将 ecs 服务上的容器端口设置为端口 443。看起来我们只能配置一个容器端口。在 https 上,该站点正在 docker 上使用 ssl 加载,但在端口 80 上显示“普通 HTTP 请求已发送到 HTTPS 端口”。 prnt.sc/pocu41 知道如何将流量路由到 docker 容器上的 80 和 443 端口吗?
      猜你喜欢
      • 1970-01-01
      • 2017-02-17
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 2020-11-22
      • 2021-08-29
      相关资源
      最近更新 更多