0

我需要一个反向代理,通过坐在一个 IP/端口上来支持 Lablz Web 服务器和 SSL VPN Adito(SSL Explorer 分支)。使用 Nginx 无法实现这一点。未能将 Adito 用作通用反向 HTTP 代理。

如果 HAProxy 无法感知 HTTP 流量,它是否可以回退为 TCP 代理?换句话说,如果它的第 7 层检查确定这不是 HTTP 流量,它是否可以退回到第 4 层?

这是我的设置

  • 具有一个公共 IP(弹性 IP)的 EC2 机器。
  • 只有一个端口是开放的——443。
  • Stunnel 位于 443 并将流量传递给 HAProxy(我不喜欢使用 Stunnel,但 HAProxy 还没有完全支持 SSL,这与 Nginx 不同)。
  • HAProxy 必须配置为将一些 HTTP 流量传递到一台服务器(位于 SVN 服务器前面的 Apache 服务器),并将其余 HTTP 流量传递到我们的 Lablz Web/App 服务器。
  • 所有非 HTTP 流量都必须转发到 Adito VPN。
    • 这个流量是:
      • VNC、NX、SMB
      • ...以及 Adito 支持的所有其他协议

我不能依赖源 IP 地址或端口将流量拆分为 HTTP 和非 HTTP。

那么,这样的配置可以在 HAProxy 中完成吗?可以为此使用任何其他反向代理吗?如果我对 HAProxy 的想法不正确,请告诉我,并且可以使用替代方法。

顺便说一句,Adito SSL VPN 很棒,如果此设置有效,我们将能够为 Lablz 开发人员提供出色的一键式单点登录安全 VNC-over-HTTPS 访问他们在云中的盒子。

没有解决方案,但通过 Adito - 请证明我错了。但请不要说 VNC over SSH 更好。是的,VNC-over-SSH 更快、更安全,但也更难(对于我们的目标用户群)设置并假定用户位于允许端口 22 上的出站流量的防火墙后面(并非总是如此)。

此外,Adito 不仅仅是远程访问网关——它是一个成熟的浏览器内 VPN、一个软件分发平台等等。我与 Adito 的人没有联系 - 请参阅我们 Lablz 博客上的 Adito 帖子

4

1 回答 1

0

好的,首先,我会使用一个简单的防火墙将所有 HTTP 与非 HTTP 流量分开。您需要的是数据包检查以找出传入的内容。

haproxy 或 nginx 都无法做到这一点。它们都是为网络流量而设计的,我看不出他们如何检查流量来猜测他们正在处理的是什么。

更新:对此进行了一些研究,使用 iptables 您可能可以使用字符串匹配来分配流量。然而,这一切都很棘手,尤其是在加密性质的情况下。我的一个朋友发现了l7-filter,这看起来就像你需要的。让我知道这是否有帮助。

于 2009-04-28T12:34:08.797 回答