我有一台具有公共 IP 的机器,目前通过 HTTPS 上的 dav_svn 为 SVN 存储库提供服务;现在我需要安装 Redmine 并将其也通过 HTTPS 提供服务。我还需要能够使用 IP 地址连接到两个站点/应用程序,因为我不能信任内部 DNS 解析,也不能编辑主机文件。
最好的解决方案是什么?将 SVN 移至 localhost:SomePort,将 Redmine 移至 localhost:SomeOtherPort 并安装 HTTPS 反向代理(如磅) 使用模式/URL 匹配来重定向连接?
答案1
有几种解决方案 - 一种是购买通配符证书并在任何地方提供服务。另一种是确保您至少使用 Apache 2.2.12 并启用 SNI,这允许您在支持它的少数浏览器上使用基于名称的虚拟主机的 SSL。或者,您可以添加公共 IP,在服务器上添加虚拟专用 IP 并将它们映射到防火墙上并使用基于 IP 的托管。
答案2
看起来你已经把自己排除在了虚拟主机的这些要求之外了。
话虽如此,您在不同的端口上运行程序并通过 ssl 直接访问这些端口应该不会有问题。
或者
使用单个主 SSL 证书在不同的 apache 根/子树下运行服务。
或者
使用直接 http localhost 运行不同的服务,然后使用您所说的反向代理或甚至适当的 apache 来处理 SSL 前端,同时通过 http 与相关服务建立后端连接。我想我会看看 nginx,我不认为 pound 会做你想做的事,因为它专门针对负载平衡,而不是针对代理重定向/正则表达式。