httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jani M." <moo...@iki.fi>
Subject Adding stickysession cookie on the proxy
Date Wed, 05 Mar 2008 20:12:30 GMT
Hi,

I've been playing with the idea of adding support for the proxy module 
to add stickysession cookies on behalf of the backend servers. I have 
one case on my hands right now where this would be needed, and I can 
think of this being of use for others too.

The way this would work is that if the proxy would see a response from a 
backend to which no LB cookie was received either from the client or the 
backend, a new cookie would be injected to the response. If the cookie 
already exists, nothing would be done. The cookie when added would be 
based on the balancer and member-name of the current worker

Before I start hacking at the code, I'd like to confirm a few things.

To start with, am I correct in assuming that others might find use for 
this feature? Should I do this, what are my chances of seeing the 
feature added to a future 2.2.x release?

By the way, is it just me, or is the current documentation on how the 
stickysession feature works quite a bit confusing? From the docs I at 
least understand it so that it would be possible to use any generic 
session-id based cookie (whether it's PHPSESSION, JSESSIONID or 
something else). However, both trying this in practice and looking 
through the code gives a rather different view - the format of the 
stickysession cookie appears to be very strict, having to match the 
balancer-name and the route defined for the BalancerMember.

Regardless, back to the subject. I've been going through the proxy code, 
and while it's by no means a simple module, adding this functionality 
doesn't look too difficult. My current plan to attack this would be roughly:

- Add a "setsticky=Off/On" parameter to ProxyPass / ProxySet
- In ap_proxy_http_process_response, add the necessary code to check if 
the cookie exists, and if not, add it. This could likely happen 
somewhere near ap_proxy_read_headers. Moving get_cookie_param from 
mod_proxy_balancer.c to proxy_util.c would allow to reuse it here.

Any thoughts and/or comments?

Cheers,
Jani

Mime
View raw message