Dotted cookie name as proxy_cache_key problem

Maxim Dounin mdounin at mdounin.ru
Thu Mar 11 17:21:40 MSK 2010


Hello!

On Thu, Mar 11, 2010 at 08:30:12AM -0500, SergeyZh wrote:

> I've tried this already, but there's config error:
> : the closing bracket in "cookie_jetbrains" variable is missing in /usr/local/nginx/conf/nginx.conf:178
> 
> Also I've tried:
> proxy_cache_key "$host$request_uri $cookie_jetbrains\.charisma\.main\.security\.PRINCIPAL";
> and with \\ and \\\ before dot, without success. :-(
> There no error, but no success too.

Ah, indeed.  nginx doesn't allow anything but [A-Za-z0-9_] in 
variable names, and it's basically impossible to extract cookie 
with other chars in it's name via $cookie_* variables.

The only solution I see is to parse cookie header manually, e.g. 
by something like this:

server {
    ...

    proxy_cache_key "$host$request_uri $xx";

    set $xx "";
    if ($http_cookie ~ "(^|[;,])jetbrains\.charisma\.main\.security\.PRINCIPAL=([^;,]+)($|[;,])") {
        set $xx $2;
    }

    ...
}

Maxim Dounin



More information about the nginx mailing list