nginx module dev: loadbalancer vs upstream handler options

Maxim Dounin mdounin at
Thu Mar 13 16:22:36 UTC 2014


On Wed, Mar 12, 2014 at 12:31:42PM -0700, Jayadev C wrote:

> First time here, was looking at supporting http protocol (using 
> nginx) over our custom zeromq server talking protocol buf. Read 
> the excelled tutorial by Evan and was also looking at few 
> similar plugins to get an idea.
> One confusion I have is, I see some plugins like memcache/redis 
> ones where the http request and response parsing is done by 
> upstream handler modules, while I also see some modules like 
> where the 
> request/response handling is done by peer.init_upstream class of 
> functions.  My typical flow would : parse http request -> 
> convert to protobuf request object -> send to zmq server -> 
> {nginx event notification} -> convert protobuf response back to 
> http response -> respond to client.
> I can imagine doing all the request/response handling during 
> connection send/receive part or by registering 
> create_request,process_header , filter hooks. Is there any 
> guideline on which is the right approach. (I have seen 
> , not exactly what I want)

The peer.init_upstream callback is to initialize balancing 
metadata, not to implement any protocol-related details.

Correct approach to implement your own protocol on top of the 
upstream module is to use create_request/process_header/etc 

Maxim Dounin

More information about the nginx mailing list