DOC: config: Improve documentation about proto/check-proto keywords

This patch adds a description about information provided by "haproxy -vv"
command regarding the available protocols. The description is adapted
depending the context (bind line, server line or health-check).
This commit is contained in:
Christopher Faulet 2021-03-26 14:44:18 +01:00
parent bb69d781c8
commit 982e17dcf5

View File

@ -7899,10 +7899,12 @@ no option disable-h2-upgrade
connection to an HTTP/2 connection if the first request it receives from a connection to an HTTP/2 connection if the first request it receives from a
given HTTP connection matches the HTTP/2 connection preface (i.e. the string given HTTP connection matches the HTTP/2 connection preface (i.e. the string
"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"). This way, it is possible to support "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"). This way, it is possible to support
HTTP/1.x and HTTP/2 clients on a non-SSL connections. This option must be used to HTTP/1.x and HTTP/2 clients on a non-SSL connections. This option must be
disable the implicit upgrade. Note this implicit upgrade is only supported used to disable the implicit upgrade. Note this implicit upgrade is only
for HTTP proxies, thus this option too. Note also it is possible to force the supported for HTTP proxies, thus this option too. Note also it is possible to
HTTP/2 on clear connections by specifying "proto h2" on the bind line. force the HTTP/2 on clear connections by specifying "proto h2" on the bind
line. Finally, this option is applied on all bind lines. To disable implicit
HTTP/2 upgrades for a specific bind line, it is possible to use "proto h1".
If this option has been enabled in a "defaults" section, it can be disabled If this option has been enabled in a "defaults" section, it can be disabled
in a specific instance by prepending the "no" keyword before it. in a specific instance by prepending the "no" keyword before it.
@ -13360,7 +13362,21 @@ proto <name>
Forces the multiplexer's protocol to use for the incoming connections. It Forces the multiplexer's protocol to use for the incoming connections. It
must be compatible with the mode of the frontend (TCP or HTTP). It must also must be compatible with the mode of the frontend (TCP or HTTP). It must also
be usable on the frontend side. The list of available protocols is reported be usable on the frontend side. The list of available protocols is reported
in haproxy -vv. in haproxy -vv. The protocols properties are reported : the mode (TCP/HTTP),
the side (FE/BE), the mux name and its flags.
Some protocols report errors on aborts (flag=CLEAN_ABRT). Some others are
subject to the head-of-line blocking on server side (flag=HOL_RISK). Finally
some protocols don't support upgrades (flag=NO_UPG). The HTX compatibility is
also reported (flag=HTX).
Here are the protocols that may be used as argument to a "proto" directive on
a bind line :
h2 : mode=HTTP side=FE|BE mux=H2 flags=HTX|CLEAN_ABRT|HOL_RISK|NO_UPG
h1 : mode=HTTP side=FE|BE mux=H1 flags=HTX|NO_UPG
none : mode=TCP side=FE|BE mux=PASS flags=NO_UPG
Idea behind this option is to bypass the selection of the best multiplexer's Idea behind this option is to bypass the selection of the best multiplexer's
protocol for all connections instantiated from this listening socket. For protocol for all connections instantiated from this listening socket. For
instance, it is possible to force the http/2 on clear TCP by specifying "proto instance, it is possible to force the http/2 on clear TCP by specifying "proto
@ -13710,7 +13726,22 @@ check-proto <name>
Forces the multiplexer's protocol to use for the server's health-check Forces the multiplexer's protocol to use for the server's health-check
connections. It must be compatible with the health-check type (TCP or connections. It must be compatible with the health-check type (TCP or
HTTP). It must also be usable on the backend side. The list of available HTTP). It must also be usable on the backend side. The list of available
protocols is reported in haproxy -vv. protocols is reported in haproxy -vv. The protocols properties are
reported : the mode (TCP/HTTP), the side (FE/BE), the mux name and its flags.
Some protocols report errors on aborts (flag=CLEAN_ABRT). Some others are
subject to the head-of-line blocking on server side (flag=HOL_RISK). Finally
some protocols don't support upgrades (flag=NO_UPG). The HTX compatibility is
also reported (flag=HTX).
Here are the protocols that may be used as argument to a "check-proto"
directive on a server line:
h2 : mode=HTTP side=FE|BE mux=H2 flags=HTX|CLEAN_ABRT|HOL_RISK|NO_UPG
fcgi : mode=HTTP side=BE mux=FCGI flags=HTX|HOL_RISK|NO_UPG
h1 : mode=HTTP side=FE|BE mux=H1 flags=HTX|NO_UPG
none : mode=TCP side=FE|BE mux=PASS flags=NO_UPG
Idea behind this option is to bypass the selection of the best multiplexer's Idea behind this option is to bypass the selection of the best multiplexer's
protocol for health-check connections established to this server. protocol for health-check connections established to this server.
If not defined, the server one will be used, if set. If not defined, the server one will be used, if set.
@ -14203,7 +14234,22 @@ proto <name>
Forces the multiplexer's protocol to use for the outgoing connections to this Forces the multiplexer's protocol to use for the outgoing connections to this
server. It must be compatible with the mode of the backend (TCP or HTTP). It server. It must be compatible with the mode of the backend (TCP or HTTP). It
must also be usable on the backend side. The list of available protocols is must also be usable on the backend side. The list of available protocols is
reported in haproxy -vv. reported in haproxy -vv.The protocols properties are reported : the mode
(TCP/HTTP), the side (FE/BE), the mux name and its flags.
Some protocols report errors on aborts (flag=CLEAN_ABRT). Some others are
subject to the head-of-line blocking on server side (flag=HOL_RISK). Finally
some protocols don't support upgrades (flag=NO_UPG). The HTX compatibility is
also reported (flag=HTX).
Here are the protocols that may be used as argument to a "proto" directive on
a server line :
h2 : mode=HTTP side=FE|BE mux=H2 flags=HTX|CLEAN_ABRT|HOL_RISK|NO_UPG
fcgi : mode=HTTP side=BE mux=FCGI flags=HTX|HOL_RISK|NO_UPG
h1 : mode=HTTP side=FE|BE mux=H1 flags=HTX|NO_UPG
none : mode=TCP side=FE|BE mux=PASS flags=NO_UPG
Idea behind this option is to bypass the selection of the best multiplexer's Idea behind this option is to bypass the selection of the best multiplexer's
protocol for all connections established to this server. protocol for all connections established to this server.