Question regarding the "server" directive handler function

hi

some time ago i wrote the nginx module upstream_consistent_hash which
is also presented on the nginx wiki:

so this module actually works and is compatible to the php memcache
module. but i have the following problem. if you specify memcache
hosts, using dns names, then the php-memcache module will build the
hashring based on the dns names that are entered, but the nginx
upstream_consistent_hash module builds the hashring based on the
resolved ips.
i’m looking for a way to fix this. for this the directive handler
function ngx_http_upstream_consistent_hash would need to get the
actual strings which are entered into the config somehow, not only the
resolved ips. so i’ve read through the code of the upstream module
where it handles the “server” directive. and if i understand that code
there right, there is actually no way to retrieve the entered strings
without patching the upstreams module, because the upstreams module
seems to resolve the names via ngx_parse_url and then only keeps
certain data of the ngx_url_t struct, but not the actual entered
string.

is that right, do i really have to patch the upstreams module, or did
i (hopefully) miss something?

thanks,

mauro

Hello!

On Fri, Feb 19, 2010 at 08:18:13PM +0800, Mauro Stettler wrote:

upstream_consistent_hash module builds the hashring based on the
string.

is that right, do i really have to patch the upstreams module, or did
i (hopefully) miss something?

Yes, it’s currently impossible to get upstream name as written in
config. The patch for this may be found in memcached_hash module,
commit is here:

http://git.openhack.ru/?p=nginx-patched.git;a=commitdiff;h=de9561bc10bdedb26f91cedb0fb2512785561b18

It would be fine to see this merged into nginx.

Maxim D.

hi,

thanks a lot. i agree, it would be really nice to have that merged.
shouldn’t be a big thing anyway (2 lines). i guess thats igor’s
decision?

mauro