Multiple IP alias to be used with Nginx


#1

Hey guys,

had a question for anyone that is utilizing massive amount of ip alise
on nix to allow proper ip listening for nginx. I currently have
1x/24 and 1x/23 network that i need nginx to listen for… I also run
independent config files for each unique ip address on the box which
listens for an active ip address/adapter on the server. Ive had to
turn to using ip alise for this function to work properly but its
really a crappy way of doing this (having over 700 ip alise is not
something an admin would want to have) so is there a way to force
nginx to listen to an ip addresses/request that are not active on the
box? I am utilizing a Load balancer in an DSR mode…

Thanks in advance


#2

On Fri, May 29, 2009 at 10:51:10AM -0700, Payam C. wrote:

nginx to listen to an ip addresses/request that are not active on the
box? I am utilizing a Load balancer in an DSR mode…

If you set *:80 and do not set “bind” on listen’s, then nginx will
listen
on *:80 only, and will call getsockname() to learn address:

 server {
     listen  80;
     listen  192.168.1.1:80;
     ...
 }

 server {
     listen  192.168.1.2:80;
     ...
 }

 server {
     listen  192.168.1.3:80;
     ...
 }

#3

2009/5/29 Jérôme Loyet removed_email_address@domain.invalid:

something an admin would want to have) so is there a way to force
net/ipv4/conf//arp_ignore and
/proc/sys/net/ipv4/conf/
/arp_announce). This way, each real server
has its own VIP and nginx (or other softwares) can listen on them.

hope it helps

Hi,

yep, same concept only on the actual adapter is where im doing this
and simply dropping outbound arp requests…


#4

2009/5/29 Payam C. removed_email_address@domain.invalid:

nginx to listen to an ip addresses/request that are not active on the
box? I am utilizing a Load balancer in an DSR mode…

do you mean that on your real server the VIP are not mounted ?

I use a similar architecture with LVS and direct routing (should be
the same as DSR). And on the real server each VIP is mounted on
loopback and the system is told not to respond to ARP request for
loopback interfaces coming on ethernet interface (play with
net/ipv4/conf//arp_ignore and
/proc/sys/net/ipv4/conf/
/arp_announce). This way, each real server
has its own VIP and nginx (or other softwares) can listen on them.

hope it helps