【问题标题】:Can HAProxy front both Web servers and SSL VPN on one IP and port?HAProxy 可以在一个 IP 和端口上同时处理 Web 服务器和 SSL VPN 吗?
【发布时间】:2010-10-22 04:28:38
【问题描述】:

我需要一个反向代理,通过一个 IP/端口来支持 Lablz Web 服务器和 SSL VPN Adito(SSL Explorer fork)。使用 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 的人没有任何关系 - 请参阅我的 Adito post on our Lablz blog

【问题讨论】:

    标签: ssl amazon-ec2 nginx vpn haproxy


    【解决方案1】:

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

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

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

    【讨论】:

    • 直到,感谢您的建议。我正在查看 L7-filter,据我所知,它可以使用正则表达式来识别应用程序协议,包括 HTTP。 L7-filter 从 IPTABLES 获取数据包并将它们返回给 IPTABLES。 L7-filter 检查每个 TCP 连接上的第一组 IP 数据包,并根据正则表达式匹配标记每个数据包。然后 IPTABLES 可以使用此标记将标记的数据包转发到正确的 IP/PORT。理论上听起来不错,但设置起来似乎非常复杂 - 至少对我来说是这样。
    • 直到,HAProxy 可以代理任何 TCP 流量,这就是为什么我认为它可以检测 HTTP 和非 HTTP 流量并将它们分开的原因。但是在研究了 HAProxy 文档之后,我找不到方法——因此我在 stackoverflow 上问了一个问题。 Nginx 不代理 ant TCP 协议,只代理它支持的特定协议,如 HTTP、SMTP - 所以你是对的 - 它不能使用。 l7-filter 当前的 HTTP 匹配模式使用 HTTP 响应,而不是请求 - 因此它不适合路由流量。可能会为 HTTP 创建新的 l7-filter 正则表达式模式...
    • 我正在探索使用 DeleGate (delegate.org) 的可能性,它是一个全功能代理 - 转发和反向代理。它支持数十种应用协议,可以作为任何应用协议的通用 TCP 代理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2011-12-12
    • 1970-01-01
    • 2017-06-01
    • 2012-07-07
    • 2016-04-11
    相关资源
    最近更新 更多