I'm investigating HAProxy as a possible replacement for F5. F5 is capable of persisting a session based on a response header value:

  set session [HTTP::header X-Session]
  if {$session ne ""} {
    persist add uie $session

and then route all subsequent requests which contain the same session ID in a header, query parameter, path, etc. to the same machine, eg:

  set session [findstr [HTTP::path] "/session/" 9 /]
  if {$session} {
    persist uie $session

I'm wondering if this is even possible to do with HAProxy?


HAProxy 1.5 (the current development version) implements stickiness on response with the stick store-response command. The command would be like this:

stick store-response hdr(X-Session)
stick on url-param(session) # the session ID is in a query parameter
# if the session ID is in the path, like /session/{session ID}/doSomething
# in this case, the X-Session header value probably has to be the format "/session/{session ID}"
# and the session ID length has to be fixed
stick on path {session ID + path prefix length, including slashes} if path_beg "/session"

Disclaimer: the above is based on reading the docs, not tested on an actual HAProxy installation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.