我托管着一台有 150 个域名(网站)的服务器,每个 SSL 都需要专用 IP 地址。因此服务器是 Windows 2008,有 150 个 IP 地址和 150 个网站。我需要高可用性解决方案。因此考虑设置 AWS 但 ELB 不是一个解决方案... 并且每个实例可以获得的最大 IP 地址是 12 个。那么我该怎么做才能将所有 150 个站点托管在一个实例上,并通过不同可用区域中的实例实现高可用性。
答案1
这不是一个“简单”的答案。以下是一些值得思考的问题。
- 您是否必须使用 Windows Server 2008 或 2008 R2 和 IIS 7.0/7.5?您是否可以选择在 Server 2012/2012 R2 之上迁移到 IIS 8.0/8.5?如果是,您可以利用 IIS 中的 SNI(服务器名称指示)。
这将允许您使用 1 个静态 IP,并使用绑定到 1 个静态 IP 的多个 SSL 证书。这意味着使用了 HostHeaders。此功能有一些注意事项,但它们主要针对不支持 SNI 的旧版浏览器,例如 IE 5 和 6。
您可以在 IIS 7/7.5 上的 Server 2008 和 2008 R2 中使用 SNI 解决方法,但这并不那么容易。
- 对于您的网站,您是否出于任何特定原因使用 Windows 和 IIS?如果您不提供除静态内容之外的任何内容,您是否考虑过使用 Apache?它本身就具有此功能。它不关心 IP 地址数量,并且已经使用 SNI 很长时间了。我知道它并不总是那么简单,不要把这篇文章当成“Windows 糟透了”的帖子。它只是另一种替代解决方案。显然,如果您有动态内容(例如 ASP.NET),那么您将与 MS 绑定,这绝对没问题。但是,如果您正在运行 PHP/MySQL/PGSQL,即使存在学习曲线,您可能也需要考虑切换。
我们公司在 AWS 上使用 Ubuntu/Apache2,全天使用 *.DOMAIN.COM(通配符)证书,并且运行着大约 100 多个唯一主机名,它们都在 1 个私有 IP 上完美运行。这用于跨多台服务器使用 ELB 进行负载平衡。
最不严谨的方法是使用端口转发方案,这在管理上会变得非常混乱,特别是如果你在负载平衡器后面有一个网络场。我提出这一点只是为了说明它的存在,但强烈建议你远离它。这也需要相当多的公共 IP 来实现这一点,但你最终可以用一个单独的私有 IP 来完成这一切。我再说一遍……我不推荐这样做。
至于 AWS,在构建了多个 VPC 并在生产环境中利用了 EC2 之后,我要说的是,不幸的是,您的情况并不简单。如果您没有大型公共 IP 存在,并且需要多台服务器来实现冗余/性能(应该是这种情况),那么在没有进行重大调整的情况下,使用它们并不是这种情况的真正选择。