proxy_pass behavior

Jim Popovitch jimpop at gmail.com
Thu Mar 27 17:50:48 UTC 2014


On Thu, Mar 27, 2014 at 1:27 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
> Hello!
>
> On Thu, Mar 27, 2014 at 01:12:18PM -0400, Jim Popovitch wrote:
>
>> On Thu, Mar 27, 2014 at 12:59 PM, Maxim Dounin <mdounin at mdounin.ru> wrote:
>> > Hello!
>> >
>> > On Thu, Mar 27, 2014 at 12:29:03PM -0400, Jim Popovitch wrote:
>> >
>> >> Should proxy_pass retry ipv4 if ipv6 fails?   Currently (1.5.12), it
>> >> does not, and there is no way to force proxy_pass to always use ipv4.
>> >
>> > In no particular order:
>> >
>> > - The proxy_next_upstream is expected to retry by default.
>>
>> Yes, that works if the host name has 2 or more A  OR  2 or more AAAA
>> records.  proxy_next_upstream does not appear to transition to the
>> next protocol (i.e. from ipv4 to ipv6)
>
> It doesn't care about address family.  As long as connect() to
> one address fails, it will try next one.

I will have to do some more tests, but so far 1.5.12 (debian wheezy)
does not appear to try the next one if the next one is a different
protocol family.

>> > - There _is_ a way to force proxy_pass to always use ipv4 - you
>> >   should configure your system accordingly, and
>> >   getaddrinfo(AI_ADDRCONFIG) as used by nginx will do the right
>> >   thing.  E.g., on Linux net.ipv6.conf.all.disable_ipv6 can be set
>> >   to disable use of ipv6.
>>
>> :-)  That's unacceptable!!  :-)   I don't want people to disable ipv6,
>> I want proxy_pass to use ipv6 and upon failure use ipv4.  ;-)
>
> It was you who claimed that "there is no way to force proxy_pass
> to always use ipv4".  There is.

What I was trying to claim was that there is no way to run nginx on
ipv4 and ipv6 yet force proxy_pass to use only ipv4.  Of course you
can proxy bind to a v4 interface, but that doesn't scale with syncing
configs to multiple servers.   Maybe it's time for a proxy_protocol
variable.....

-Jim P.



More information about the nginx-devel mailing list