Nginx – Using nginx to mask ip address of outgoing connections

ipmasknginx

We have a business requirement to channel all outgoing connections from multiple processing servers through a single IP address.

Our setup is as follows:

We have an nginx server which works as a load balancer for incoming http requests. We then have multiple web servers, which connect to processing servers which in turn connect to our customers databases.

Client –> Loadbalancer –> Web servers –> Process servers –> Database

Client <– Loadbalancer <– Web servers <– Process servers <– Database

Currently, we provide our customers a list of IP addresses that they should add to their database whitelist. However, as we scale this whitelist will become longer and our customers in turn would need to again update their whitelist respectively.

Desired Setup

To work around this, we would like to channel all outgoing connections through another nginx server, which would mask the IP addresses of our processing servers. In turn, we would now only have one IP address that our customers would whitelist.

Client –> Loadbalancer –> Web servers –> Process servers –> IP Masking –> Database

Client <– Loadbalancer <– Web servers <– Process servers <– IP Masking <– Database

Is this possible solely with nginx, if so, what steps would we need to take to achieve this?

Best Answer

Another possible solution is using NAT. In this case masking server will be your router with configured network address translation. In this case you don't need to change customer database IP in node.js configuration, but you should change network, possibly routing configuration on all process servers and have one gateway with NAT configured