EC2:多个域的 HTTPS 负载平衡

EC2: HTTPS Load Balancing for multiple domains

我想为我的 ELB 启用 https 侦听器。我的所有实例都是通过自动缩放一个主实例启动的。

通常情况下,如果我们不在 ELB 下,nginx 服务器块将监听 80 没有 ssl_certificate 条目,或者监听 443 ssl 端口 ssl_certificates。

查看 AWS 文档,它没有回答我以下问题:

1) By default, when HTTPS is selected as a load balancer protocol, the instance protocol would be HTTP.这是为什么?我们不需要保护 ELB 和实例之间的连接吗?

2) 我已经有多个证书。通配符和用于单个子域的通配符,以及自签名证书。如何将它们移动到 AWS 允许我编辑的三个块(私钥、Public 密钥证书和证书链)。

3) 接下来,如果实例协议将是 HTTP,我是否要删除服务器块中的 SSL 配置?它应该监听端口 80 吗?

单个 Elastic Load Balancer 将流量路由到一组实例,它不是为多个域(无虚拟主机)路由流量而设计的。

例子

            /---- :80 Instance A
ELB:80 :443 ----- :80 Instance B
            \---- :80 Instance C

常见的设置是面向 Internet 的 ELB,它接受 HTTP:80 和 HTTPS:443 连接。在 HTTPS:443 的情况下,它可以处理 SSL 终止,这意味着它将接受 HTTPS,处理 SSL 并将流量路由到 HTTP:80 上的实例。

由于实例位于私有子网中,并且 ELB 和实例在您的 VPC 中进行通信,因此不需要 SSL。

对于 SSL 终止,您需要为每个 ELB 提供 SSL 证书链(三个块)。

您可以将多个证书连接在一起,如

cat 1.crt 2.crt > 3.crt

是的,应该删除所有 nginx 443 ssl 配置,并且要强制使用 HTTPS,您应该添加 X-Forwarded-Proto header.