Map module & multiple memcached servers -port number not passed to upstream module

Kon Wilms konfoo at
Tue Jul 29 21:45:17 MSD 2008

Hi folks,

First thanks for a great product, I'm migrating a cluster to a single
machine, replacing with nginx, and if the testing works out it will
serve 1 billion requests a month on average on what previously took a
good number of servers running lighty. :-)

I'm having an issue with the map module and using it to pass
parameters to the memcached module. I am running multiple memcached
servers and I want to distribute requests to them based on a fixed URL
(which maps to a backend application server).

Given the following map directive to distribute resources across
memcached servers:

map $uri $mcs {

The following when attempting to start nginx returns an error message
that the port is missing for upstream module (memcached_pass $mcs
directive is the fault):

location /resource-1
       expires -1;
       add_header Cache-Control no-cache;
       set $memcached_key $uri;
       memcached_pass $mcs;

Right now I have just duplicated the resource-nnn multiple times, and
not used the map. But since I have 20+ resources across 6 memcached
servers this seems unoptimal when hitting the last resource as all the
previous directives need to be iterated.

Any advice appreciated :-)


More information about the nginx mailing list