fastcgi_cache_path empty

Steve Holdoway steve at greengecko.co.nz
Thu Jan 16 20:08:43 UTC 2014


I think ( it's hard to read ) that you're not telling the site which
http cache to use ( fastcgi_cache microcache; ).

On my systems ( I'm looking at an Amazon one so RH
based ), /var/cache/nginx is already in use. I set
up /var/cache/nginx_fastcgi instead, which is not empty.

(1GB is way too big btw).

I created a file /etc/nginx/microcache, containing

--8<--
#	Setup var defaults
	set $no_cache "";
	# If non GET/HEAD, don't cache & mark user as uncacheable for 1 second
via cookie
	if ($request_method !~ ^(GET|HEAD)$) {
		set $no_cache "1";
	}
#	Drop no cache cookie if need be
#	(for some reason, add_header fails if included in prior if-block)
	if ($no_cache = "1") {
		add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/";
		add_header X-Microcachable "0";
	}
#	Bypass cache if no-cache cookie is set
	if ($http_cookie ~* "_mcnc") {
		set $no_cache "1";
	}

#	Bypass cache if flag is set
	fastcgi_no_cache $no_cache;
	fastcgi_cache_bypass $no_cache;
	fastcgi_cache microcache;
	fastcgi_cache_key  "$scheme$request_method$host$request_uri
$http_if_modified_since$http_if_none_match";
	fastcgi_cache_valid 404 30m;
	fastcgi_cache_valid 200 10s;
	fastcgi_max_temp_file_size 1M;
	fastcgi_cache_use_stale updating;
	fastcgi_pass_header Set-Cookie;
	fastcgi_pass_header Cookie;
	fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
--8<--
(this only stores for 10 seconds BTW, and the cache key is designed for
a magento site).

And included it in the location blocks that would use it, ie

location ~* \.php$

This way the config becomes much more readable. 

hth,

Steve

On Thu, 2014-01-16 at 20:19 +0100, Lorenzo Raffio wrote:
> No one? :)
> 
> 
> 
> 2014/1/13 Lorenzo Raffio <multiformeingegno at gmail.com>
>         I wanted to try fastcgi_cache on my nginx 1.5.8 as shown here
>         http://seravo.fi/2013/optimizing-web-server-performance-with-nginx-and-php
>         
>         
>         In nginx conf, http section, I added:
>         
>         fastcgi_cache_path /var/cache/nginx levels=1:2
>         keys_zone=microcache:10m max_size=1000m inactive=60m;
>         
>         
>         In server section:
>             set $cache_uri $request_uri;
>         
>             # POST requests and urls with a query string should always
>         go to PHP
>             if ($request_method = POST) {
>                 set $cache_uri 'null cache';
>             }
>             if ($query_string != "") {
>                 set $cache_uri 'null cache';
>             }
>         
>             # Don't cache uris containing the following segments
>             if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|
>         cron|login|register|mail).php|wp-.*.php|/feed/|index.php|
>         wp-comments-popup.php|wp-links-opml.php|wp-locations.php|
>         sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
>                 set $cache_uri 'null cache';
>             }
>         
>             # Don't use the cache for logged in users or recent
>         commenters
>             if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|
>         wp-postpass|wordpress_logged_in") {
>                 set $cache_uri 'null cache';
>             }
>         
>             location ~ \.php$ {
>                 try_files $uri =404;
>                 fastcgi_split_path_info ^(.+\.php)(/.+)$;            
>                 include fastcgi.conf;
>                 fastcgi_pass unix:/var/run/php5-fpm.sock;
>         
>         
>                 ##
>                 # Fastcgi cache
>                 ##
>                 set $skip_cache 1;
>                         if ($cache_uri != "null cache") {
>                             add_header X-Cache-Debug "$cache_uri
>         $cookie_nocache $arg_nocache$arg_comment $http_pragma
>         $http_authorization";
>                     set $skip_cache 0;
>                 }
>                 fastcgi_cache_bypass $skip_cache;
>                            fastcgi_cache_key $scheme$host$request_uri
>         $request_method;
>                     fastcgi_cache_valid any 8m;
>                            fastcgi_cache_bypass $http_pragma;
>                         fastcgi_cache_use_stale updating error timeout
>         invalid_header http_500;
>         
>             }
>         
>         I chowned /var/cache/nginx to www-data user (and group) and
>         chmodded it to 775.
>         
>         I restarted nginx but the folder is always empty. Is it
>         normal? How can I test if fastcgi_cache is working?
>         
>         Thanks in advance
>         
> 
> 
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx

-- 
Steve Holdoway BSc(Hons) MIITP
http://www.greengecko.co.nz
Linkedin: http://www.linkedin.com/in/steveholdoway
Skype: sholdowa



More information about the nginx mailing list