proxy_next_upstream and POSTs

Antoine Bonavita antoine.bonavita at
Tue May 10 11:22:27 MSD 2011


You might want to have a look at Evan's Miller section on proxying
This page is pretty much considered *the* reference for module development.


Low fare on trips to nginx land: visit

On Tue, May 10, 2011 at 12:37 AM, Jonathan Leibiusky <ionathan at> wrote:
> 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>
> 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
> _______________________________________________
> nginx mailing list
> nginx at

More information about the nginx mailing list