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).