suggestion about expansibility of the data
mdounin at mdounin.ru
Tue Jun 23 14:28:48 MSD 2009
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
> 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
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).
More information about the nginx