haproxy作为一个『代理软件』如果当工作与 HTTP 模式下,所有经由haproxy的的连接的请求和响应都取决于 frondend 中配置的 『http_connection_mode』 即 haproxy 中 frontend 与 backend 的组合,而haproxy 支持 3 种连接模式:

  • KAL keep alive: frontend 中配置为 http-keep-alive ; 这是默认模式,这也是http中的keepalive 表示所有请求和响应都得到处理,连接保持打开状态,但在响应和新请求之间处于空闲状态。
  • SCL server close : frontend 中配置为 http-server-close ; 接收到响应结束后,面向服务器的连接关闭,但面向客户端的连接保持打开状态
  • CLO close: frontend 中配置为 httpclose ;连接在响应结束后关闭,并在两个方向上附加 “Connection: close” 。

下列矩阵表示的是通过 frondend 与 backend 之间两端的代理模式,这个模式是对称的

text
1
2
3
4
5
6
7
     			| KAL | SCL | CLO
            ----+-----+-----+----
            KAL | KAL | SCL | CLO
            ----+-----+-----+----
   mode     SCL | SCL | SCL | CLO
            ----+-----+-----+----
            CLO | CLO | CLO | CLO

对于http选项的说明

选项说明
forwardfor这个选项同时存在于backend 与 frontend端,但backend中的优先级超过frontend 如果同时设置了这个参数,那么 backend段的子参数将优先与 frontend 一端
httpchk启用http协议检查来检测server的健康状态,默认情况下状态检查是仅建立一个tcp连接
httpclose这个选项代表了haproxy 对于http协议持久连接方便的配置

Reference:configuration.txt