Choosing source-address for upstream connections

Bruno Prémont bruno.premont at restena.lu
Fri May 17 12:57:00 UTC 2013


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

Bruno



More information about the nginx mailing list