将 HTTPS 流量路由到单个 IP 上的不同虚拟服务器

将 HTTPS 流量路由到单个 IP 上的不同虚拟服务器

我有一个具有单个可用 IP 的 Proxmox 实例。

我有多个虚拟机用于不同的站点(域)。每个虚拟服务器都有自己的 https 证书。

我需要找到方法将到达我的服务器 IP 的 https 流量根据域名路由到不同的虚拟服务器。

对于 HTTP 流量来说这不是问题 - 只需反向代理即可。但我需要 HTTPS 流量,并在虚拟机上保留 https 证书。

有任何想法吗?

答案1

鉴于您当前的设置,实际上只有一种方法可以做到这一点,但恐怕您不会喜欢这个方法。

问题是你需要在请求中有一些东西来确定主机名,将其传递给适当的服务器。不幸的是,这几乎包括处理实际的 SSL 连接 - 而这又需要在该中间件上拥有 SSL 证书。这意味着您不能只将证书保留在虚拟机上。

我建议的方法是设置一个实际的企业级负载均衡器,将证书放在其上,并让其适当地路由流量。

更便宜的方法是将 apache 或 nginx 设置为公共 IP 上的代理,并为每个后端虚拟服务器设置一个虚拟主机,并让该虚拟主机处理重定向。这些虚拟主机将要需要让每个虚拟主机的 SSL 证书都可用。(我还设置了一些易于编写脚本的方法来使证书可用,这样您就不必手动编辑每个证书,但这超出了本问题的范围。)

相关内容