Choosing source-address for upstream connections
Bruno Prémont
bruno.premont at restena.lu
Fri May 17 13:27:42 UTC 2013
On Fri, 17 May 2013 17:17:20 +0400 Ruslan Ermilov wrote:
> On Fri, May 17, 2013 at 02:57:00PM +0200, Bruno Prémont wrote:
> > Is there a way to tell nginx to use a specific address when talking to
> > an upstream?
> >
> > I would like to do something like:
> >
> > upstream bla {
> > server [D0C::1234]:8080 src [D0C::beaf];
> > server 1.2.3.4:8080 src 1.2.3.5;
> > server upstream.example.tld src site.example.tld;
> > }
> >
> >
> > My system has multiple local addresses and just one of them should be
> > used to contact the given upstream.
> >
> >
> > If host-name is provided the source address should be chosen of the
> > same address family as the upstream address (so it's not necessary to
> > explicitly state IP addresses and duplicate server entries for IPv4
> > and IPv6).
> >
> >
> > It's possible to do it via "src" attribute of routes though it would be
> > more clean to do it on the application side.
> > e.g.
> > ip route add D0C::1234/128 src D0C::beaf ethX
> > ip route add 1.2.3.4/32 src 1.2.3.5
>
> http://nginx.org/r/proxy_bind
>
> This is the only option so far. Per-server per-upstream source address
> selection isn't currently possible.
How does that one behave with regard to IPv4 versus IPv6?
The documentation says "address" which I guess can be either IPv4 or
IPv6 but not both so the right one gets choosen depending on the
destination address format? Or can I write it twice, once with IPv4
addr, once with IPv6 addr (ideally once with a hostname that gets
resolved as appropriate).
As it can be set on per-server or per-location level it would be
sufficient for me.
Bruno
More information about the nginx
mailing list