# Dotted cookie name as proxy\_cache\_key problem

**URL:** <https://www.ruby-forum.com/t/dotted-cookie-name-as-proxy-cache-key-problem/184965>\
**Category:** NGINX\
**Created:** [March 11, 2010, 5:00am UTC](https://www.ruby-forum.com/t/dotted-cookie-name-as-proxy-cache-key-problem/184965 "2010-03-11T05:00:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![SergeyZh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e274bd/32.png) [@SergeyZh](https://www.ruby-forum.com/u/SergeyZh)\
**Post date:** [March 11, 2010, 5:00am UTC](https://www.ruby-forum.com/t/dotted-cookie-name-as-proxy-cache-key-problem/184965/1 "2010-03-11T05:00:44Z")

</div>

I’m trying to configure proxy cache for backend server and cookie name  
with user’s login is long with dots  
(jetbrains.charisma.main.security.PRINCIPAL).  
So my config is:  
proxy\_cache\_key “$host$request\_uri  
$cookie\_jetbrains.charisma.main.security.PRINCIPAL”;

And now proxied key is:  
KEY: [youtrack.jetbrains.net/issue/RSRP-170140](http://youtrack.jetbrains.net/issue/RSRP-170140)  
.charisma.main.security.PRINCIPAL

I think there’s some problem with parsing cookie name, because I don’t  
see content of cookie in key name.  
Nginx version is: 0.7.64

Can somebody explain me what should I set in proxy\_cache\_key to handle  
cookie name correctly, please ?

Thanks,  
Sergey

Posted at Nginx Forum:

> **[Dotted cookie name as proxy\_cache\_key problem](https://forum.nginx.org/read.php?2,62326,62326#msg-62326)**
>
> I'm trying to configure proxy cache for backend server and cookie name with user's login is long with dots (jetbrains.charisma.main.security.PRINCIPAL). So my config is: proxy\_cache\_key "$host$request\_uri...

---

<div class="post-metadata">

**Author:** ![SergeyZh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e274bd/32.png) [@SergeyZh](https://www.ruby-forum.com/u/SergeyZh)\
**Post date:** [March 11, 2010, 12:51pm UTC](https://www.ruby-forum.com/t/dotted-cookie-name-as-proxy-cache-key-problem/184965/2 "2010-03-11T12:51:14Z")

</div>

Hello!

On Wed, Mar 10, 2010 at 10:59:53PM -0500, SergeyZh wrote:

> I’m trying to configure proxy cache for backend server and  
> cookie name with user’s login is long with dots  
> (jetbrains.charisma.main.security.PRINCIPAL).
> 
> So my config is:  
> proxy\_cache\_key “$host$request\_uri $cookie\_jetbrains.charisma.main.security.PRINCIPAL”;

Try this:

- proxy\_cache\_key “$host$request\_uri  
$cookie\_jetbrains.charisma.main.security.PRINCIPAL”;

- proxy\_cache\_key “$host$request\_uri  
${cookie\_jetbrains.charisma.main.security.PRINCIPAL}”;

Maxim D.

---

<div class="post-metadata">

**Author:** ![SergeyZh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e274bd/32.png) [@SergeyZh](https://www.ruby-forum.com/u/SergeyZh)\
**Post date:** [March 11, 2010, 2:30pm UTC](https://www.ruby-forum.com/t/dotted-cookie-name-as-proxy-cache-key-problem/184965/3 "2010-03-11T14:30:46Z")

</div>

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.

Thanks,  
Sergey

Posted at Nginx Forum:

> **[Re: Dotted cookie name as proxy\_cache\_key problem](https://forum.nginx.org/read.php?2,62326,62693#msg-62693)**
>
> I'm trying to configure proxy cache for backend server and cookie name with user's login is long with dots (jetbrains.charisma.main.security.PRINCIPAL). So my config is: proxy\_cache\_key "$host$request\_uri...

---

<div class="post-metadata">

**Author:** ![SergeyZh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e274bd/32.png) [@SergeyZh](https://www.ruby-forum.com/u/SergeyZh)\
**Post date:** [March 11, 2010, 4:39pm UTC](https://www.ruby-forum.com/t/dotted-cookie-name-as-proxy-cache-key-problem/184965/4 "2010-03-11T16:39:34Z")

</div>

Thanks a lot Maxim!

I’ve changed  
(^|[;,])jetbrains.charisma.main.security.PRINCIPAL=([^;,]+)($|[;,])  
to  
(.\*)jetbrains.charisma.main.security.PRINCIPAL=([^;,]+)($|[;,])  
because your regexp didn’t matched my cookie and now everything is  
working.

How cpu expensive these calculations ? Should I try to patch Nginx to  
allow dot’s in cookie name or I can use this solution without any  
overhead ?

Thanks,  
Sergey

Posted at Nginx Forum:

> **[Re: Dotted cookie name as proxy\_cache\_key problem](https://forum.nginx.org/read.php?2,62326,62736#msg-62736)**
>
> I'm trying to configure proxy cache for backend server and cookie name with user's login is long with dots (jetbrains.charisma.main.security.PRINCIPAL). So my config is: proxy\_cache\_key "$host$request\_uri...

---

<div class="post-metadata">

**Author:** ![SergeyZh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e274bd/32.png) [@SergeyZh](https://www.ruby-forum.com/u/SergeyZh)\
**Post date:** [March 11, 2010, 3:22pm UTC](https://www.ruby-forum.com/t/dotted-cookie-name-as-proxy-cache-key-problem/184965/5 "2010-03-11T15:22:17Z")

</div>

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 D.
