problem with / location stanza

Michael Barrett loki77 at
Fri Apr 15 04:57:43 MSD 2011

Thanks Maxim & Francis - I think I'm just doing it the wrong way to begin with.  I've decided instead to try to use the uwsgi caching configs.

So I'm playing with that now, and I can't seem to get my app to cache a certain location.  Here's the basic config I'm using:

(In my http{}):

uwsgi_cache_path /data/nginx/cache levels=1:2 keys_zone=my-cache:10m;
uwsgi_temp_path /data/nginx/tmp;

(then in my server{}):

    location /event/1340113315 {
        uwsgi_pass ebdjango_uwsgi;
        uwsgi_cache my-cache;
        uwsgi_cache_valid any 10m;
        uwsgi_cache_key djcore$request_uri;
        access_log syslog test-cache;
        access_log /var/log/nginx/dj_access.log evb;

When I run with this, and hit that URL, I'm seeing the test-cache log message showing up in my logfiles, so it's definitely hitting that location block.  That said, I don't see any files being created in /data/nginx/cache.  Also, when doing an strace of the nginx process, I see it passing the query back to the uwsgi process, so it doesn't look like the cache is being used at all.

Any hints on what I'm doing wrong here?  I get the feeling it's something dead simple, and I'm just glazing over it.


On Apr 13, 2011, at 5:15 PM, Francis Daly wrote:

> On Wed, Apr 13, 2011 at 03:06:04PM -0700, Michael Barrett wrote:
> Hi there,
>> I'm trying to make it so that if I get a request to / on my host to any hostname that doesn't start with 'www' it will check for a static page on the server, and if that doesn't exist it goes back to my uwsgi process for dynamic content. 
> As you've seen, "if" inside "location" does probably not do what you
> want it to.
> The usual nginx way is to have multiple server{} blocks with different
> server_name values.
> has details.
>> - Goes to the uwsgi process
>> - Checks for a static file (/landing-cache/vanity:foo.html), if it can't find it it goes to the uwsgi process
>> - Is dealt with in other location stanzas.
> In your "not-www" server block, include the "location = /" block with
> the try_files. In your "www" server block, don't.
> If you can enumerate your server names, that would be ideal. If not,
> perhaps you can use one "server_name www.*" and have the other be the
> default. And failing that, then perhaps something like
>  server_name ~^(www\.)(?<domain>.+)$;
> and
>  server_name ~^(?<vanity>[^.]+)\.(?<domain>.+)$;
> (which would give you $domain, as well as $vanity) could work.
>>        try_files /landing-cache/vanity:$vanity.html @ebdjango_uwsgi;
> Or possibly, avoid all that and just set $vanity as the first bit of
> $host or $http_host, and make sure that /landing-cache/vanity:www.html
> does not exist.
> It probably depends on what other differences you want between the
> various server_name configurations.
> Good luck with it,
> 	f
> -- 
> Francis Daly        francis at
> _______________________________________________
> nginx mailing list
> nginx at

Michael Barrett
loki77 at

More information about the nginx mailing list