5 messages in ru.sysoev.nginxRe: suggestion about expansibility of...
FromSent OnAttachments
ChieuJun 23, 2009 3:04 am 
Maxim DouninJun 23, 2009 3:28 am 
ChieuJun 23, 2009 5:26 am 
Maxim DouninJun 23, 2009 6:27 am 
ChieuJun 23, 2009 7:29 pm 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: suggestion about expansibility of the dataActions...
From:Maxim Dounin (mdou@mdounin.ru)
Date:Jun 23, 2009 3:28:25 am
List:ru.sysoev.nginx

Hello!

On Tue, Jun 23, 2009 at 06:05:19PM +0800, Chieu wrote:

hi, developers Because of the modularity of nginx, I can extend the new function easily. But there are some requirements which need to modify the original source code. For example: I want to add a variable which records the count of requests sent to each upstream. And I must add a variable into the struct "ngx_http_upstream_rr_peer_t", when round robin get the upstream ,the variable++ . This way, I shoud modify the source code of the upstream module.

You may easily write transparent upstream balancer module that does this (just counts and passes everything to the real balancer). Without nginx code modifications. It's not really efficient due to extra function calls, but it will work.

I think if the struct "ngx_http_upstream_rr_peer_t" have a reserved pointer(void *), which reserved for others developing new modules. Totally, I think the modularity of nginx just resolved the expansibility of function. But if the I want to expand some import data like the struct "ngx_http_request_t", I must modify the original source code. And if some important struct adds a reserved pointer, I think the data of nginx will be easily be extend.

I don't really understand the question, but for any data you may use either your module context (every module has pointer to it's context stored in ngx_http_request_t) or variables (if you need something that survives internal redirects).