Memcached configuration issue


#1

I hope you will forgive my asking for help on what I assume is a fairly
obvious error of some sort – but it’s one I’m afraid I can’t figure
out.

Basically, we have a cherrypy back end server that will resolve layer
names
to IP address, handling requests of the form:

/resolve?layer=test

or

/resolve?layer=es_layer_23

The back end server sets a memcache key/value pair so that the next time
around, nginx can avoid the “@cache_miss” proxy pass.

For the most part, all works well – if I request the name of a key in
the
memcached, (“test”, for example) – it gets returned. Likewise, if I
request a key NOT in memcached, the request gets sent to my server.

However, there are a couple of classes of layers that can be handled
generically: ANY layer starting with “es_” or “api_” will go to the
same
host: So no need to clutter memcached, right? Just convert the key so
that
it is identical for all such requests…

When I attempt to do so using the code fragment below, however, I get
what I
believe is unusual behavior – requests for anything starting with “es_”
or
“api_” return nothing – no HTTP headers, no nothing.

Any thoughts on why?

Thanks,

–Tom

    location /resolve {
            default_type  text/html;

            set $memcached_key "api:/resolve?$args";
            if ($args ~ "layer=es_") {
                    set $memcached_key "api:/resolve?layer=es_";
            }
            if ($args ~ "layer=api_") {
                    set $memcached_key "api:/resolve?layer=api_";
            }
            memcached_pass localhost:11211;
            error_page 404 = @cache_miss;
    }