nginx module dev: loadbalancer vs upstream handler options

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


Hello!

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 
> https://github.com/chaoslawful/drizzle-nginx-module 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 
> https://github.com/FRiCKLE/ngx_zeromq , 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 
callbacks.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list