Map module & multiple memcached servers -port number not passed to upstream module
Kon Wilms
konfoo at gmail.com
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 {
default 127.0.0.1:11401;
/resource-1 127.0.0.1:11401;
/resource-2 127.0.0.1:11401;
/resource-3 127.0.0.1:11402;
/resource-4 127.0.0.1:11403;
}
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;
break;
}
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 :-)
Cheers
Kon
More information about the nginx
mailing list