HAProxy 为您提供了将模式设置为 TCP 或 HTTP 的选项。它还允许您设置端口。
那么为什么允许我在 HTTP 和 TCP 之间进行选择,如果它也让我选择端口呢?当然,如果我想要 HTTP,我可以选择 TCP 和端口 80?
为什么只有 TCP 和 HTTP?这似乎暗示 HTTP 不是 TCP。为什么没有 TCP、HTTP、SNMP、FTP 等等等等等等。
为什么只有 HTTP 和 TCP?如果 HTTP 是 TCP,为什么要使用这些选项中的任何一个?发现它很混乱,而且很难找到任何关于负载平衡非 http(s) 服务的信息。
通过在 HAProxy 配置中使用 HTTP 方法,您可以访问几个特定于 HTTP 的选项。例如,您可以根据 HTTP 请求中的 URL 选择不同的后端。指定 TCP 模式时,HAProxy 不会评估数据包中的 HTTP 标头。
因此,您绝对可以只将 TCP 用于 HTTP 流量,但您不会有额外的 HTTP 选项。附带说明,除非您使用 SSL 功能,否则您必须将 TCP 用于 HTTPS 流量,因为数据包已加密并且 HAProxy 无法查看 HTTP 标头。
有人为此写了一篇博文:http ://www.linickx.com/645/load-balance-anything-with-haproxy
无论如何,我不知道为什么维护 haproxy 的人使用他们选择的语法,我不太喜欢它,因为我发现它具有误导性(说某些东西可能是我的大脑中的 HTTP或TCP 螺丝钉),但事实证明你可以使用 HAProxy 对任何内容进行负载平衡,如果不是 HTTP(s),则只需使用 TCP 和正确的端口号。