HAPEE 1.8r1 comprises the following new functionalities:

New Features

HTTP/2 Protocol Support

HAPEE now supports HTTP/2 on the client side (i.e. the front-end sections) and can act as a gateway between HTTP/2 clients and your HTTP/1.1 and HTTP/1.0 applications.

Multi-threading Model

The multi-threading model is a feature that allows HAProxy to start multiple threads within a single process.

Server-template Configuration Directive

The server-template configuration directive allows you to instantiate a number of placeholder backend servers in a single configuration line, instead of having to add tens or hundreds of configuration lines explicitly.

Dynamic Cookies

A new keyword dynamic for the directive cookie now exists to enable cookie-based application persistence.

Improved Runtime API

The Runtime API allows administrators and automation systems to interact with HAProxy during runtime. HAProxy version 1.8 comes with further improvements and new directives:

Directive

Action

disable dynamic-cookie backend backend

Disable dynamic cookie for the backend

enable dynamic-cookie backend backend

Enable dynamic cookie for the backend

set dynamic-cookie-key backend <backend> <value>

Set cookie key hash

set server <backend>/<server> agent-addr <addr>

Change server agent address

set server <backend>/<server> agent-send <value>

Change server agent string

set server <backend>/<server> fqdn <FQDN>

Change server's FQDN

show acl [<acl>]

Show list of ACLs in HAProxy or dump ACL contents

show cli sockets

Show list of Runtime API clients

show fd

Show list of open file descriptors (for debugging only)

show info json

Famous "show info" in JSON output format

show stat [{<iid>|<proxy>} <type> <sid>] json

Famous "show stat" in JSON output format format and displayed per frontend or backend

show schema json

Dump JSON schema used for "show stat" and "show info" commands

Other Improvements

SSL/TLS Mode Async

The OpenSSL library version 1.1.0 and above supports asynchronous I/O operations. This means that the key computation phase (the heaviest part of the TLS protocol) can be run in a non-blocking way in HAProxy.

New Sample Fetches

HAProxy can extract data from traffic passing through it. We call these functions "sample fetches". More information about sample fetches can be found under "Fetching Data Samples" in the HAPEE documentation.

This version has a group of new sample fetches:

Fetch

Action

distcc_body

Parses distcc message and returns body associated to it

distcc_param

Parses distcc message and returns parameter associated to it

hostname

Returns system hostname

srv_queue

Returns number of connections currently pending in server's queue

ssl_fc_cipherlist_bin

Returns binary form of client hello cipher list

ssl_fc_cipherlist_hex

Same as above, but encoded as hexadecimal

ssl_fc_cipherlist_str

Returns decoded text form of client hello cipher list

ssl_fc_cipherlist_xxh

Returns xxh64 of client hello cipher list

req.hdrs

Returns current request headers

req.hdrs_bin

Returns current request headers in preparsed binary form

New Converters

Converters

Action

b64dec

:Decodes base64 encoded string into binary

nbsrv

Returns number of available servers in a backend

sha1

Computes SHA1 digest of binary input

xxh32

Hashes binary input into unsigned 32 bit

xxh64

Hashes binary input into unsigned 64 bit

LUA API Improvements

Core Class

core.backends

Array of backends

core.frontends

Array of frontends

Proxy Class

proxy.name

String containing proxy name

HTTP Applet Class

set_var(applet, var, value)

Set HAProxy variable

unset_var(applet, var)

Unset HAProxy variable

get_var(applet, var)

Return content of HAProxy variable

TCP Applet Class

set_var(applet, var, value)

Set HAProxy variable

unset_var(applet, var)

Unset HAProxy variable

get_var(applet, var)

Return content of HAProxy variable