fastcgi_cache_key with cookie

António P. P. Almeida appa at
Tue Dec 27 06:37:14 UTC 2011

On 27 Dez 2011 05h13 WET, nginx-forum at 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_uri;
> fastcgi_cache_methods GET HEAD; 
This is not needed. This is the *default* setting. Cf.

> 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=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Remove that key and replace by: 

fastcgi_cache_key $scheme$host$request_uri;

At the http level do:

map $http_cookie $no_cache {
    default 0;
    ~SESS 1;

Then add:

## If we have a cookie we should bypass the cache. The same if we have a
fastcgi_cache_bypass $no_cache;
fastcgi_no_cache $no_cache;

To the above FCGI cache config.

Also the first stop for drupal and Nginx stuff is the g.d.o group ;)

--- appa

More information about the nginx mailing list