Rajandran R Creator of OpenAlgo - OpenSource Algo Trading framework for Indian Traders. Building GenAI Applications. Telecom Engineer turned Full-time Derivative Trader. Mostly Trading Nifty, Banknifty, High Liquid Stock Derivatives. Trading the Markets Since 2006 onwards. Using Market Profile and Orderflow for more than a decade. Designed and published 100+ open source trading systems on various trading tools. Strongly believe that market understanding and robust trading frameworks are the key to the trading success. Building Algo Platforms, Writing about Markets, Trading System Design, Market Sentiment, Trading Softwares & Trading Nuances since 2007 onwards. Author of Marketcalls.in

One Server, Two Public IPs, Two Domains – How I Did It with Vultr

2 min read

Sometimes, you may want to isolate apps by IP, simulate geo-location diversity, or prepare separate API backends — all from a single VM. Thankfully, Vultr makes it possible using Reserved IPs.

Let’s walk through how you can host:

  • demo1.yourdomain.com → bound to Mumbai IP
  • demo2.yourdomain.com → bound to Delhi IP
    → on a single Ubuntu server.

But you want to:

  • Keep everything on one server
  • Assign each domain a unique static IP
  • Make them look geographically distributed or separated

This tutorial walks you through how to pull this off using Vultr Reserved IPs and Nginx.


Step 1: Spin Up a Vultr VM

  • Launch a VPS in Mumbai
  • Choose Ubuntu 22.04
  • Note the assigned IP (e.g., 65.20.91.120)

Step 2: Add a Reserved IP from Another Region

  • Go to your VM → Settings → IP & DNS
  • Click “Add IP Address”
  • Choose Delhi as the region
  • Provision the IP (e.g., 65.20.72.117)

Step 3: Configure Netplan

sudo nano /etc/netplan/10-ens3.yaml

Paste:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: no
      addresses: [65.20.91.120/23, 65.20.72.117/32]
      nameservers:
        addresses: [108.61.10.10]
      routes:
        - to: default
          via: 65.20.90.1
        - to: 169.254.0.0/16
          via: 65.20.90.1
          metric: 100

Then run:

sudo chmod 600 /etc/netplan/10-ens3.yaml
sudo netplan apply

Step 4: Restart the Server (Important)

Use the “Restart” button in Vultr dashboard. This activates routing on the new IP.


Step 5: Configure DNS Records

Use Cloudflare (or your registrar’s DNS):

SubdomainTypeValueProxy
demo1.yourdomain.comA65.20.91.120DNS Only
demo2.yourdomain.comA65.20.72.117DNS Only

Step 6: Install and Configure Nginx

sudo apt update && sudo apt install nginx -y

Create Site Folders:

sudo mkdir -p /var/www/demo1.yourdomain.com
sudo mkdir -p /var/www/demo2.yourdomain.com

echo "Hello from Mumbai" | sudo tee /var/www/demo1.yourdomain.com/index.html
echo "Hello from Delhi" | sudo tee /var/www/demo2.yourdomain.com/index.html

Create Nginx Configs:

demo1.yourdomain.com

sudo nano /etc/nginx/sites-available/demo1.yourdomain.com
server {
    listen 80 default_server;
    server_name demo1.yourdomain.com;
    root /var/www/demo1.yourdomain.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

demo2.yourdomain.com

sudo nano /etc/nginx/sites-available/demo2.yourdomain.com
server {
    listen 65.20.72.117:80;
    server_name demo2.yourdomain.com;
    root /var/www/demo2.yourdomain.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Enable Both Sites:

sudo ln -s /etc/nginx/sites-available/demo1.yourdomain.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/demo2.yourdomain.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

🧪 Step 7: Test with Ping

🖥 From Local PC:

C:\Users\Admin1>ping demo1.yourdomain.com

Pinging demo1.yourdomain.com [65.20.91.120] with 32 bytes of data:
Reply from 65.20.91.120: bytes=32 time=14ms TTL=53
Reply from 65.20.91.120: bytes=32 time=14ms TTL=53
Reply from 65.20.91.120: bytes=32 time=14ms TTL=53
Reply from 65.20.91.120: bytes=32 time=14ms TTL=53

Ping statistics for 65.20.91.120:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)
C:\Users\Admin1>ping demo2.yourdomain.com

Pinging demo2.yourdomain.com [65.20.72.117] with 32 bytes of data:
Reply from 65.20.72.117: bytes=32 time=14ms TTL=53
Reply from 65.20.72.117: bytes=32 time=14ms TTL=53
Reply from 65.20.72.117: bytes=32 time=14ms TTL=53
Reply from 65.20.72.117: bytes=32 time=13ms TTL=53

Ping statistics for 65.20.72.117:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)

Optional: Add Free SSL with Certbot

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d demo1.yourdomain.com -d demo2.yourdomain.com

DNS Only vs Cloudflare Proxy — What the End User Sees

SettingWhat End User SeesWhat Actually Happens
DNS OnlyYour server’s real IP, directRequests hit your server directly
Proxy (CF)Cloudflare IPRequests are routed through Cloudflare’s edge

Why Use DNS Only?

  • You need port 80 open for SSL certs
  • You want users to hit your real server directly
  • Ideal for testing and multi-IP routing

Why Use Cloudflare Proxy?

  • Hides your server’s IP
  • Adds DDoS protection, caching, firewall

Conclusion

You now have:

  • Two working domains
  • Two static IPs (Mumbai + Delhi)
  • One Nginx server serving both cleanly
  • Clear routing, low latency, and perfect separation

This setup is perfect for devs, startups, or side projects looking to save infrastructure costs without compromising on structure.


Rajandran R Creator of OpenAlgo - OpenSource Algo Trading framework for Indian Traders. Building GenAI Applications. Telecom Engineer turned Full-time Derivative Trader. Mostly Trading Nifty, Banknifty, High Liquid Stock Derivatives. Trading the Markets Since 2006 onwards. Using Market Profile and Orderflow for more than a decade. Designed and published 100+ open source trading systems on various trading tools. Strongly believe that market understanding and robust trading frameworks are the key to the trading success. Building Algo Platforms, Writing about Markets, Trading System Design, Market Sentiment, Trading Softwares & Trading Nuances since 2007 onwards. Author of Marketcalls.in

Leave a Reply

Get Notifications, Alerts on Market Updates, Trading Tools, Automation & More