![HAProxy HTTP 与 TCP](https://linux22.com/image/636899/HAProxy%20HTTP%20%E4%B8%8E%20TCP.png)
HAProxy 可让您选择将模式设置为 TCP 或 HTTP。它还允许您设置端口。
那么,如果还让我选择端口,为什么还要让我在 HTTP 和 TCP 之间进行选择呢?如果我想要 HTTP,我当然可以选择 TCP 和端口 80 吧?
为什么只有 TCP 和 HTTP?这似乎意味着 HTTP 不是 TCP。为什么不使用 TCP、HTTP、SNMP、FTP 等。
为什么只有 HTTP 和 TCP?如果 HTTP 是 TCP,为什么会有这两个选项?这非常令人困惑,而且很难找到有关非 http(s) 服务负载平衡的任何信息。
答案1
通过在 HAProxy 配置中使用 HTTP 方法,您可以访问多个特定于 HTTP 的选项。例如,您可以根据 HTTP 请求中的 URL 选择不同的后端。指定 TCP 模式时,HAProxy 不会评估数据包中的 HTTP 标头。
因此,您当然可以只使用 TCP 进行 HTTP 流量,但您没有其他 HTTP 选项。附带说明一下,除非您使用 SSL 功能,否则您必须使用 TCP 进行 HTTPS 流量,因为数据包已加密,而 HAProxy 无法查看 HTTP 标头。
答案2
有人就此发表了一篇博客文章:http://www.linickx.com/645/load-balance-anything-with-haproxy
无论如何,我不知道为什么维护 haproxy 的人会使用他们选择的语法,我不太喜欢它,因为我觉得它具有误导性(说某些东西可以是 HTTP或者TCP 搞乱了我的大脑),但事实证明,您可以使用 HAProxy 平衡任何内容的负载,如果不是 HTTP(s),那么只需使用 TCP 和正确的端口号。