我会提倡在负载均衡器上终止 SSL(无论是在您的网络上,还是在 CDN 提供商或其他地方)。这意味着 LB 可以检查流量并可以更好地进行负载均衡。这也意味着您的负载均衡器负责处理缓慢的客户端、损坏的 SSL 实现和一般的 Internet 不稳定。与后端服务器相比,您的负载平衡器可能有更好的资源来执行此操作。这也意味着全世界看到的 SSL 证书都在负载均衡器上(这有望使它们更易于管理)。
这里的替代方法是简单地对从客户端到后端服务器的 TCP 连接进行负载平衡。由于 LB 无法以这种方式检查正在发生的事情,它无法将负载均匀地分布在后端服务器上,后端服务器必须处理所有 Internet 脆弱性。如果您不信任您的负载均衡器、CDN 提供商或其他任何东西,我只会使用此方法。
是否从负载均衡器重新加密到后端服务器是个人选择和环境的问题。如果您正在处理信用卡或金融交易,那么您可能受到政府的监管,因此必须重新加密。如果负载均衡器和后端服务器之间的流量通过不受信任的网络传输,您可能还应该重新加密。如果您只是托管您公司的网站,那么您可能能够避免重新加密的额外开销,如果您并不真正关心它的安全方面。
重新加密并没有像您想象的那样增加负载。通常,负载平衡器将能够保持与服务器的持久连接,因此对于网络上的“跃点”,SSL 成本将非常低。
最后要考虑的是后端服务器上的应用程序。如果到达那里的所有流量都是 HTTP,那么它就无法根据客户端使用的协议做出决定。例如,它不能说“您正在尝试通过 HTTP 访问登录页面,所以我会将您重定向到该页面的 HTTPS 版本”。您可以让负载均衡器添加一个 HTTP 标头来表示“这来自 HTTPS”,但该标头需要在应用程序中进行特殊处理。根据您的情况,重新加密并让应用程序以“默认”方式工作可能会更容易,而不是需要特定于站点的修改。
总之,我想说:在负载均衡器处终止并重新加密到您的后端服务器。如果您这样做并注意到一些问题,那么您可以根据需要进行调整。