proxy_next_upstream and POSTs

Jonathan Leibiusky ionathan at gmail.com
Tue May 10 02:37:36 MSD 2011


I read some modules out there and could manage to write a custom module that
will do the job. I have some doubts though.
How can I call the original upstream module from my own upstream module? I
don't want to replace it.

I think the magic might go here:
ngx_http_upstream_init_<module name>_peer method. Is that right? Is there
any example that I can use?

Thanks!

Jonathan

On Mon, May 9, 2011 at 1:42 PM, Jonathan Leibiusky <ionathan at gmail.com>wrote:

> Hi!
> Nginx is great and the way it handles upstream and failed server as well! I
> would just like to avoid retrying request when they are POSTs, as POSTs are
> no idempotent and my backend can't handle duplicated POSTs right now.
> So I started to mess around with the code. What I have in mind is to create
> a module that will change the behavior of proxy_next_upstream by just
> checking that http method != POST.
> I believe it supposed to be really simple.
> So a couple of questions for those who are into nginx source code:
> 1. Is there any good article, blog post, etc, that explain how to create
> and test a module?
> 2. Any good advice on how I should do it? I was thinking on adding the
> validation somewhere in ngx_http_upstream_test_next (ngx_http_upstream.c),
> something like:
> if (r->method == NGX_HTTP_POST) {
>   return NGX_DECLINED;
> }
>
> If this is OK, how could I do this from a module? So when someone compiles
> nginx with this module, he'll have this behavior instead of the standard
> one?
>
> Sorry if my questions are dumb.
>
> Jonathan
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx/attachments/20110509/7f9d492f/attachment.html>


More information about the nginx mailing list