HAProxy Enterprise Documentation 2.5r1

Syntax

In HAProxy Enterprise, variables are used to store and manipulate values that can be used in various parts of the configuration file. Overall, variables provide a powerful mechanism for configuring and customizing HAProxy Enterprise's behavior based on runtime conditions and other factors

Global variables

set-var can only be defined in the global section of your hapee-lb.cfg file. This will define variables that live for the lifetime of the HAProxy Enterprise process. The syntax for creating a variable in HAProxy Enterprise is as follows:

global

  # Set a variable named "my_var" to a string value
  set-var proc.my_string str("some string value")

  # Set a variable named "my_num_var" to an integer value
  set-var proc.my_num_var int(123)

Once a variable is defined, you can use it in various parts of the configuration file such as ACLs, log formats, and HTTP header values by using the var fetch method.

frontend  example
  bind :80

  http-response set-header X-MyString %[var(proc.my_string)]
  http-response set-header X-MyNumber %[var(proc.my_num_var)]

Temporary variables

You can use http-request set-var and http-response set-var for variables that live only for a given request, response, or client session.

frontend example

  # Define a custom variable named 'my_string' and set its value to 'some string value'
  http-request set-var(txn.my_string) str("some string value")

  # Use the custom variable in the response header
  http-response add-header X-My-String %[var(txn.my_string)]

In addition to setting variables explicitly, HAProxy Enterprise also provides a number of built-in fetches that are automatically set based on various aspects of the client request or server response. These include variables like src, which contains the client's source IP address, and path, which contains the path portion of the requested URL. More information can be found in the section Fetching samples.

Scoping

All variables are scoped, meaning they can only be accessed within the same scope. When you set a variable, you prefix its names with a scope. The scope can be any of the following:

  • proc: variable is available during all phases

  • sess: variable is available during a client's entire TCP session

  • txn: variable is available during an entire HTTP request-response transaction

  • req: variable is available during the HTTP request phase only

  • res: variable is available during the HTTP response phase only

Use the set-var directives to set a variable:

  • http-request set-var

  • http-response set-var

  • http-response-after-response set-var

In the following example, the variable mypath is scoped to the transaction, which makes it available during both the request and response phases:

frontend www
   bind :80
   http-request set-var(txn.mypath) path

Unset a variable

Use one of the following directives to unset a variable:

  • http-request unset-var

  • http-response unset-var

  • http-response-after-response unset-var


Next up

Environment variables