我目前有一台带有 Django 堆栈的服务器。我有带有 HTTPS SSL 证书的 nginx。我想通过在前面放置一个 nginx 负载平衡器来扩展 Web 层,并在启动新的 droplet 来处理负载时将 IP 地址添加到上游模块配置中。设置起来非常简单,但我不知道如何在启用 SSL 的情况下使其工作。我尝试了以下方法:
在负载均衡器 droplet 和每个 Web 应用 droplet 中启用 SSL。这不起作用,因为 Web 应用 droplet 中的 SSL 证书是使用特定域名创建的。负载均衡器无法连接到 Web 应用,因为它无法验证 SSL 证书,因为它使用的是 IP 地址而不是 FQDN,例如 1.2.3.4 而不是 web1.example.com
然后我尝试仅在负载均衡器上启用 SSL。负载均衡器可以通过 HTTP 与 Web 应用程序 droplet 进行通信,但这种流量在公共网络上是不安全的。
我不知所措。您能提供一些建议吗?我需要在负载均衡器和 Web 应用程序 droplet 之间设置专用网络吗?如果需要,该怎么做?是否有其他使用 SSL 证书或 DNS 配置设置的技术?
我使用的是 Ubuntu 12.10 x64。不在 AWS 上,因此无法访问 VPC 或安全组。所有虚拟机都有一个公共 IP,因此需要使负载均衡器和 Web 应用节点之间的连接尽可能安全。
任何帮助,将不胜感激!
答案1
从阅读仍然开放且活跃的 nginx 错误报告http://trac.nginx.org/nginx/ticket/13我认为 nginx 不支持您想要的功能,例如使用正确的 SSL(例如使用合理的证书验证)保护后端。在错误的末尾,您会找到指向最近(2013 年 8 月)讨论的链接,其中还包括一个补丁。