一个ELB可以服务多个域吗?它可以服务于多个子域吗?

Can a single ELB serve multiple domains? Can it serve multiple subdomains?

我想知道 ELB 是否可以根据域名将 http 请求路由到不同的 ASG(如果后端是基于单个实例而不是基于 ASG 的,则为不同的实例)。

没有。 ELB 将流量 均匀分布在与其关联的实例之间。多个 AutoScaling 组确实可以与单个 ELB 相关联,但是不可能根据任何因素影响负载平衡算法。

在您的情况下,您需要 2 个 ELB。

可能的解决方法:如果 ELB 后面的所有实例都装有带有 Virtual Hosts 运行 的 Apache,您可以使用单个 ELB 为不同的域或子域提供服务。但是,您的每个实例都是相同的 - 您不会有一些实例用于域 1 和一些实例用于域 2。

这个故事的寓意是,当使用 ELB 时,ELB 后面的所有实例都需要是无状态的并且做同样的事情。而且,您无法影响 ELB 如何将流量分配到它后面的节点。

阅读 documentation 会对您有所帮助。

ELB 子域路由至少早在这个时候就添加了:https://aws.amazon.com/about-aws/whats-new/2017/04/elastic-load-balancing-adds-support-for-host-based-routing-and-increased-rules-on-its-application-load-balancer/ 根据具体情况(例如 tls 要求),这可能会或可能不会满足您的需求。

应用程序 ELB 已进一步扩展,如此处所述:https://aws.amazon.com/blogs/aws/new-advanced-request-routing-for-aws-application-load-balancers/ 允许其他功能,例如自定义 headers 和更强大的布尔逻辑运算。

在撰写本文时,某些条件适用,例如 tls 和通配符证书,尽管 https://aws.amazon.com/blogs/aws/new-application-load-balancer-sni/ 解决了其中的一些问题。