Help on designing using multiple location/upstream modules

Reetesh Ranjan reeteshr at
Wed Nov 27 06:24:52 UTC 2013

I saw several pages on web about ngx_http_subrequest;  filters vs location modules using it; parallel vs sequential usage; code/modules using it etc. Would first try out a solution for my use case using this method, and come back in case I am stuck and of course after reading previous threads.

From: reeteshr at
To: nginx-devel at
Subject: Help on designing using multiple location/upstream modules
Date: Tue, 26 Nov 2013 18:00:35 +0530

I am a newbie to nginx. I have done some initial research on nginx architecture, location modules, upstream modules, third party modules available for various purposes etc. After going through a number of pages I have a question which I can't seem to find an easy answer to.
I have a very simple use case like this: user enters a set of keywords to search on my web site. In the backend, in my nginx location module, i first go to Redis for cached results against the set of keywords and if not found, to Sphinx search daemon. In the latter case, I set the results obtained from Sphinx back into Redis.
I have thought of the following design, in terms of nginx modules I would use:
1   My main location module that picks the keywords entered and communicates to Redis and Sphinx2   For communicating to Redis I thought of using HttpRedis2Module (   For communicating with Sphinx, I am trying to write a simple C++ client or adapt the Sphinx C++ client ( or its parts into an upstream module.
What I wanted to know is how to invoke the upstream modules within my main location module. Are there standard APIs provided by Nginx for the same and do they retain the async advantages? Or do I have to resort to make curl calls from my C++ client and use the response? I was hoping that the former (Nginx APIs to call upstream modules) exists in some form and serves as some "shortcut" or "faster" way/alternative to making some curl API calls.

nginx-devel mailing list
nginx-devel at 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx-devel mailing list