I've noticed some interesting behaviour with persistance cookies and
haproxy.

Let's say you use the following settings in your haproxy.cfg:

  cookie SERVERID insert indirect
  server static1 172.25.0.10:1080 cookie server1 check inter 15s
  server static2 172.25.0.11:1080 cookie server2 check inter 15s

Any time haproxy receives a request that has no SERVERID cookie it will
set one. Unfortunately, this doesn't take into consideration the
cachability of the request. If a user receives a set-cookie in their
response, on cacheable content, and if the proxy server isn't configured
to strip Set-Cookie responses when serving from cache, all users of that
proxy server will persist to a single backend server.

I noticed this while looking into some other issues we were having with
Set-Cookie and proxy servers (notably the great firewall of Singapore).

Within our own application we either set Cache-Control: Private or
ensure that we don't send a Set-Cookie on content that is declared as
cacheable. I don't know if this kind of functionality could be
interested for haproxy, but I thought I'd share my findings and see if
anyone else was aware of this pattern of behaviour, if it was causing
issues, and if there is or should be a way to address this issue.

-JohnF

Reply via email to