fastcgi_cache_key with cookie

brianmercer nginx-forum at
Tue Dec 27 17:01:32 UTC 2011

zenw Wrote:
> I'm trying to cache per user Drupal using this
> config :
> fastcgi_ignore_headers Cache-Control Expires;
> #tried '__utma' 'Set-Cookie'
> fastcgi_cache drupal;
> fastcgi_cache_key
> $http_cookie$request_method$scheme$host$request_ur
> i;
> fastcgi_cache_methods GET HEAD;
> fastcgi_cache_valid any 1s;
> fastcgi_cache_use_stale error timeout
> invalid_header updating http_500;     
> fastcgi_max_temp_file_size 2M;
> add_header X-Micro-Cache $upstream_cache_status;
> I can get this working without google analytics,
> but when I enable google analytics it adds several
> cookies __utma __utmb __utmc __utmz.  Nginx looks
> at $http_cookie and sees that its different so it
> passes it to the backend.  Preferably I would like
> to just use the cache key as $cookie_SESS which is
> the drupal session cookie, however the full cookie
> name is encoded to something like this
> SSESSae42ac488e03c2e2xxxxxda6ce2f5ee7=xxxxxxxxxxxx
> xxxxxxxxxxxxxxxxxx
> I've omitted some letters and numbers.  So my
> question is how do I just extract the Drupal
> Session cookie?  Or failing that just strip all
> cookies?  I have tried fastcgi_ignore header
> '__utma' 'Set-Cookie' but it doesn't seem to work.

Maybe extract the session cookie with something like this:

  map $http_cookie $session_cookie {
    default "";
    ~^.*(?<key>SESS.+\;).*$ $key;



I'm sure the regex could be written better, but that does work.

Posted at Nginx Forum:,220510,220559#msg-220559

More information about the nginx mailing list